我想捕获所有用逗号分隔或不以逗号分隔的数字,不包括 4 位数字:
我想匹配这些数字(在我的例子中,数字总是由 3 位数字分隔)
978,763,835,536,363
123
123,456
123456
7456
3400
不包括类似的年份
1200 till 2020
这是我写的
regex_patterns = [
re.compile(r'[0-9]+,?[0-9]+,?[0-9]+,?[0-9]+')
]
效果很好,我不知道如何从这些数字中排除年份...非常感谢
当然,我是在工作 o the sentients,数字在句子中,一开始这样的行不是必需的
-因此 60 比 41 就像 100,000 比 65,656½,βυ 的适当大小 这被发现是 36,075,5621(偏心率为 9165),对应于火星的整个椭圆形路径。 -是 4657。
编辑:
因为在我的任务中我遇到了很多问题,所以我更新了几次这个问题。
首先主要解决问题!感谢大家的贡献。
只是一个很小的问题。根据其他评论,我没有像这里那样集成解决方案
r'(?<!\S)(?<![\d,])(?:(?!(?:1[2-9]\d\d|20[01]\d|2020))\d{4,}[\u00BC-\u00BE\u2150-\u215E]?|\d{1,3}(?:,\d{3})+)(?![\d,])[\u00BC-\u00BE\u2150-\u215E]?(?!x)(?!/)
它可以正确地计算出大部分情况,
https://regex101.com/r/o5gdDt/8
然后又因为我的文字中有这样的噪音:
" 我将 ψο 作为一个数字单位 [x]。它的正方形 GEOM 也将是一个数字单位 [x2]。在εο上加上平方GEOM,227,052,两者之和就是ψε或ψν的平方GEOM。但是 βν 的平方 GEOM 是 4,310,747,475 PARA "
无法捕获以“,”结尾的数字227,052
当我更改它时,我遇到了这个问题
(?<!\S)(?<![\d,])(?:(?!(?:1[2-9]\d\d|20[01]\d|2020))\d{4,}[\u00BC-\u00BE\u2150-\u215E]?|\d{1,3}(?:,\d{3})+)(?![\d])[\u00BC-\u00BE\u2150-\u215E]?(?!x)(?!/)
``` (basically ignoring comma in (,?![\d]))
I faced with another problem which the regex captured 4,310,747,475 in this:
4,310,747,475x2+978,763,835,536,363
as you see here..
https://regex101.com/r/o5gdDt/9
any idea would be very appreciated
however the regex now works almost good, but in order to be perfect I need to improve it
-
请您参考如下方法:
如果排除所有 4 位数字年就是这个
\b(?!\d{4}\b)[0-9]+(?:,(?!\d{4}\b)[0-9]+)*\b
https://regex101.com/r/T3L3X5/1
如果只排除 1200 到 2020 之间的年数就是这个
\b(?!(?:12\d{2}|1[3-9]\d{2}|20[01]\d|2020)\b)[0-9] +(?:,(?!(?:12\d{2}|1[3-9]\d{2}|20[01]\d|2020)\b)[0-9]+)*\b
