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

本文关键字:模式 正则表达式 | 更新日期: 2023-09-27 18:36:04

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

我的常规检查是('d*)(([,'.]?'s*((k|m)?hz)*)|('s*((k|m)?hz)*))$

我试图从中寻找价值

  • 23,2赫兹
  • 24,4赫兹
  • 25,0 赫萨德夫
  • 26赫兹
  • 27赫兹
  • 28hzhdwe
  • 29
  • 30.4赫兹
  • 31.8赫兹
  • 4343.34.234 千赫
  • 65标

进一步解释:

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

任何帮助都是值得的。

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

运行替换

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