0

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

\b[0-9](,?\.?\d){4,7}\b(?!,\d)

它工作正常,除了它与 10,000,02332 匹配 000,02332。我尝试了lookbehind和^,但似乎我犯了一些错误。

这是示例文本

  1. Nunc 12vitae lac332us sollicitudin 2033112233,varius 100212 ipsum a,妊娠 10,000,02332 ante。Nunc et 100,021 justo eget arcu fringilla balloonum id venenatis lacus。Pellentesque a 23133221tellus 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,发酵 5467667834533 semper felis。整数非 elit placerat metus 发酵液转子。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/

4

2 回答 2

2

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

给你:

(?<!\d[,.])\b[0-9](,?\.?\d){4,7}\b(?![,.]\d)

(?<!\d[,.])是对后跟逗号或句号的数字进行否定的后视检查。

我也更改了负前瞻以检查句号,否则第一部分12345678.3将匹配。

测试

于 2013-06-27T12:41:30.580 回答
1

这适合你吗?它看起来没有那么复杂。

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

于 2013-06-27T12:48:00.467 回答