Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有匹配项的C#的正则表达式模式_C#_Regex - Fatal编程技术网

具有匹配项的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

我正在做一个项目,我需要从给定的文本中找到频率。我写了一个正则表达式,试图检测频率,但我一直在研究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、hz或空格或,或
  • 如果是,或者。然后它应该有另一个数字,后跟khz,mhz,hz
  • 将显示任何帮助。

    运行“替换”

    (\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+
    。这是为了匹配小数部分。