具有匹配项的C#的正则表达式模式
我正在做一个项目,我需要从给定的文本中找到频率。我写了一个正则表达式,试图检测频率,但我一直在研究C#如何处理它,以及如何在我的软件中准确地使用它 我的日常开支是:$ 我试图从中找到价值具有匹配项的C#的正则表达式模式,c#,regex,C#,Regex,我正在做一个项目,我需要从给定的文本中找到频率。我写了一个正则表达式,试图检测频率,但我一直在研究C#如何处理它,以及如何在我的软件中准确地使用它 我的日常开支是:$ 我试图从中找到价值 23.2赫兹 24,4Hz 25,0 Hzsadf 26赫兹 27Khz 28HZHZHZHZHDWE 二十九 30.4Hz 31.8赫兹 4343.34.234千赫 65SD 进一步解释: 系统需要为美国和比利时文化工作,因此,23.2(美国)=23,2(Be) 我试着找到一个数字,后跟khz、mhz、h
- 23.2赫兹
- 24,4Hz
- 25,0 Hzsadf
- 26赫兹
- 27Khz
- 28HZHZHZHZHDWE
- 二十九
- 30.4Hz
- 31.8赫兹
- 4343.34.234千赫
- 65SD
(\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
(?您没有指定结果应该是什么(因此,仅使用输入,很难知道所需的输出)。手动滚动您自己的解析器可能是更好的选择。这是错误案例:)。我只想找到频率。@Oded,我想找到频率[我的信息的第一行也这么说],所以我会生成那些我可以或不能拥有有效频率的情况。我会得到像上面列出的项目之一,而不是完整的句子短文本。如果这有帮助的话,那么样本的声音要比可能被误解的话大。如果阅读者认为65SD在他们的语言/地区是一种有效的频率符号,该怎么办?谢谢,我仍在努力理解你写的内容,但我还需要29个匹配:)。。。如果没有,我可以手动使用filter,尽管我将在我们让它按要求工作后解释表达式。这29是一个匹配类型的螺丝钉的东西虽然-它将不得不匹配任何数字,这种方式或是29在这种情况下,你的所有输入?你介意告诉我什么是:(?:[,]\d+?意思是说,特别是为什么我们有?最后,当我们用偏执来结束它时,我对你的努力感到非常兴奋,也对你的写作速度感到非常惊讶,我现在尝试了3个小时…(?:[,]\d+)
是一个非捕获组(从(?:
到)
的东西),可能出现0或1次(最后一次?
),在其中,我们期望使用点或逗号[,]
和一个或多个数字\d+
。这是为了匹配小数部分。