这里的目标是找到长度为5到8的所有数值。十进制和逗号之间允许它们。这个表达方式与我的方法相同:
\b[0-9](,?\.?\d){4,7}\b(?!,\d)
它工作正常,但它匹配10,000,02332 000,002332。我尝试了两个lookbehind和^但似乎我犯了一些错误。
这里是示例文本
- Nunc 12vitae lac332us sollicitudin 2033112233,varius 100212 ipsum a,gravida 10,000,02332 ante。 Nunc et 100,021 justo eget arcu fringilla fermentum id venenatis lacus。 Pellentesque a 23133221 tellus vel diam dignissim scelerisque123 nec ac2 12311 ipsum。 Fusce at 12311.1 dui ut odio posuere 1233312234666 condimentum。 Nulla 4564quis viverra 568833452233 nunc。 Morbi 234322123 imperdiet,nulla adipiscing interdum venenatis,dui mi 2341112333 congue erat,sed 34234112323 suscipit est 345221 turpis in lorem。 Proin magna123 nunc,1231116565 rhoncus sit amet elit a,fermentum 5467667834533 semper felis。 整数非elit placerat metus fermentum auctor。 Donec viverra enim in augue adipiscing,eget facilisis 3422211 ligula 12313645 vulputate。 Maecenas tincidunt 2346776444 posuere pretium。 Donec euismod cursus velit。 ,11111
醇>
你可以在这里测试一下: http://gskinner.com/RegExr/
答案 0 :(得分:2)
尝试将(?<!\d[,.])
添加到正则表达式的正面并将(?!,\d)
更改为(?![,.]\d)
。
给你:
(?<!\d[,.])\b[0-9](,?\.?\d){4,7}\b(?![,.]\d)
(?<!\d[,.])
否定后台检查数字后跟逗号或句号。
我更改了否定前瞻以检查完整停止,因为否则12345678.3
的第一部分将匹配。
答案 1 :(得分:1)
这适合你吗?看起来并不复杂。
\ B \ d [\ d,。] {3,7} \ d \ B'/ P>