简体   繁体   English

具有匹配项的C#的正则表达式模式

[英]Regular Expression Pattern for C# with matches

I am working on project where I need to find Frequency from a given text. 我正在研究需要从给定文本中找到频率的项目。 I wrote a Regular expression that try to detect frequency, however I am stuck with how C# handle it and how exactly I use it in my software 我写了一个正则表达式来尝试检测频率,但是我对C#的处理方式以及在软件中使用频率的方式一无所知

My regular experssion is (\\d*)(([,\\.]?\\s*((k|m)?hz)*)|(\\s*((k|m)?hz)*))$ 我的常规表达式是(\\d*)(([,\\.]?\\s*((k|m)?hz)*)|(\\s*((k|m)?hz)*))$

And I am trying to find value from 我正在努力从中寻找价值

  • 23,2 Hz 23.2赫兹
  • 24,4Hz 24,4赫兹
  • 25,0 Hzsadf 25,0赫兹
  • 26 Hz 26赫兹
  • 27Khz 27赫兹
  • 28hzzhzhzhdhdwe 28hzzhzhzhdhdwe
  • 29 29
  • 30.4Hz 30.4赫兹
  • 31.8 Hz 31.8赫兹
  • 4343.34.234 Khz 4343.34.234赫兹
  • 65SD 65SD

Further Explanation: 进一步说明:

  1. System needs to work for US and Belgium Culture hence, 23.2 (US) = 23,2 (Be) 系统需要适用于美国和比利时文化,因此23.2(US)= 23,2(Be)
  2. I try to find a Digit, followed by either khz,mhz,hz or space or , or . 我尝试找到一个Digit,然后找到khz,mhz,hz或空格或或。
  3. If it is , or . 如果是,或者。 then it should have another Digit followed by khz, mhz, hz 那么它应该有另一个数字,然后是khz,mhz,hz

Any help is appericated. 任何帮助都适用。

Running replace 运行替换

(\d+(?:[.,]\d+)?)\s*([KkMm]?[Hh][Zz])

for ($1 $2) gives for ($1 $2)

(23,2 Hz)
(24,4 Hz)
(25,0 Hz)sadf
(26 Hz)
(27 Khz)
(28 hz)zhzhzhdhdwe
29
(30.4 Hz)
(31.8 Hz)
4343.(34.234 Khz)
65SD

Any corrections to desired behavior? 对所需行为有任何更正吗?

upd : this is with negative lookbehind and word boundary: upd :这是带有负向后看和单词边界的:

(?<![.,0-9])(\d+(?:[.,]\d+)?)\s*([KkMm]?[Hh][Zz])\b

(23,2 Hz)
(24,4 Hz)
25,0 Hzsadf
(26 Hz)
(27 Khz)
28hzzhzhzhdhdwe
29
(30.4 Hz)
(31.8 Hz)
4343.34.234 Khz
65SD

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM