Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.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,这里的目标是查找长度为5到8的所有数值。它们之间允许有小数点和逗号。这是我用同样的方式表达的: \b[0-9](,?\.?\d){4,7}\b(?!,\d) 它工作正常,但与1000002332和00002332匹配。我试过向后看和向后看,但似乎我犯了一些错误 这里是示例文本 Nunc 12vitae lac332us sollicitudin 2033112233,varius 100212 ipsum a,孕妇100000 2332 ante。Nunc et 100021 justo eg

这里的目标是查找长度为5到8的所有数值。它们之间允许有小数点和逗号。这是我用同样的方式表达的:

\b[0-9](,?\.?\d){4,7}\b(?!,\d)
它工作正常,但与1000002332和00002332匹配。我试过向后看和向后看,但似乎我犯了一些错误

这里是示例文本

  • Nunc 12vitae lac332us sollicitudin 2033112233,varius 100212 ipsum a,孕妇100000 2332 ante。Nunc et 100021 justo eget arcu fringilla酵母菌id venenatis lacus。佩伦茨克a 23133221 tellus vel diam Dignessim权杖123 nec ac2 12311 ipsum。Fusce在12311.1 dui ut odio posuere 123331224666调味品。 纳拉4564quis viverra 56883345223 nunc。Morbi 234322123,维尼那蒂斯河间水道,水母23411133凝析油,sed 3423411233,西伯利亚东部345221,洛雷姆turpis。Proin magna123 nunc,1231116565 rhoncus sit amet elit a,发酵罐5467667834533 semper felis。 整型非精英placerat metus酵素拍卖商。奥古斯都阿迪皮辛的Donec viverra enim,eget facilisis 3422211 ligula 12313645 vulputate。马塞纳斯·蒂尼迪姆234677444波苏尔·普雷蒂姆。Donec euismod cursus velit,11111
  • 您可以在此处进行测试:

    尝试将
    (?)添加到正则表达式的前面,并将
    (?!,\d)
    更改为
    (?![,.]\d)

    给你:

    (?<!\d[,.])\b[0-9](,?\.?\d){4,7}\b(?![,.]\d)
    
    (?
    
    (?是负数查找,检查后面是否有逗号或句号

    我更改了负前瞻,以检查是否还有一个句号,否则
    12345678.3
    的第一部分将匹配

    .

    尝试将
    (?)添加到正则表达式的前面,并将
    (?!,\d)
    更改为
    (?![,.]\d)

    给你:

    (?<!\d[,.])\b[0-9](,?\.?\d){4,7}\b(?![,.]\d)
    
    (?
    
    (?是负数查找,检查后面是否有逗号或句号

    我更改了负前瞻,以检查是否还有一个句号,否则
    12345678.3
    的第一部分将匹配


    这个适合你吗?看起来没那么复杂


    \b\d[\d,.]{3,7}\d\b这适合你吗?看起来没有那么复杂


    \b\d[\d,.]{3,7}\d\b

    您在
    00002332
    上匹配是因为\b匹配非单词字符,包括
    。您在
    00002332
    上匹配是因为\b匹配非单词字符,包括
    。考虑到输入,这似乎是一个不错的解决方案,但这得到了匹配:de>100212
    。它可能不会出现?如果这被接受,我肯定会+1它。@DanielGimenez和
    1.1.1.1.1
    也会匹配。要求只是说明可以使用逗号和句号,而不是只应该有一个句号,或者逗号只能分隔3位数字组。这是我最初给出的解决方案是正确的。我的初始表达式不是没有缺陷的,比如它将通过11.11.11,这是错误的。欢迎任何人改进它。感谢Dukeling考虑到输入,这似乎是一个好的解决方案,但这得到了匹配:
    100212
    。它可能不会出现。如果这被接受,我将确定ly+1它。@DanielGimenez和
    1.1.1.1.1
    也将得到匹配。要求只是说明逗号和句号是允许的,而不是只有一个句号或逗号只能分隔3位数字组。这是我最初给出的正确解决方案。我的初始表达式并不像它那样没有缺陷通过11.11.11,这是错误的。欢迎任何人改进它。感谢Dukeling与其他解决方案一样,它似乎适用于给定的数据,但如果
    100212
    可能出现在文本中,则这是一个不正确的匹配。不,这是不正确的。它将1000002332作为两个单独的值进行匹配。请在给出的链接上验证您自己。感谢回复Y与其他解决方案一样,它似乎适用于给定的数据,但如果
    100212
    可能出现在文本中,则这是一个不正确的匹配。不,这是不正确的。它将1000002332作为两个单独的值进行匹配。请在相关链接上验证您自己。感谢回复