C# 数值正则表达式
这里的目标是查找长度为5到8的所有数值。它们之间允许有小数点和逗号。这是我用同样的方式表达的: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
\b[0-9](,?\.?\d){4,7}\b(?!,\d)
它工作正常,但与1000002332和00002332匹配。我试过向后看和向后看,但似乎我犯了一些错误
这里是示例文本
(?)添加到正则表达式的前面,并将(?!,\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作为两个单独的值进行匹配。请在相关链接上验证您自己。感谢回复