0

我正在研究需要从给定文本中找到频率的项目。我写了一个正则表达式来尝试检测频率,但是我对 C# 如何处理它以及我如何在我的软件中准确地使用它感到困惑

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

我试图从中找到价值

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

进一步说明:

  1. 系统需要为美国和比利时文化工作,因此,23.2 (US) = 23,2 (Be)
  2. 我试图找到一个数字,然后是 khz,mhz,hz 或空格或 , 或 .
  3. 如果是,或。那么它应该有另一个数字,后跟khz,mhz,hz

有任何帮助。

4

1 回答 1

1

运行替换

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

($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

对所需行为的任​​何更正?

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
于 2012-05-31T10:45:23.033 回答