Skip to main content
 首页 » 编程设计

python之我需要编写一个正则表达式来识别所有以逗号分隔或不分隔的数字,不包括 4 位数字

2025年05月04日24mfryf

我想捕获所有用逗号分隔或不以逗号分隔的数字,不包括 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

https://regex101.com/r/ZuC6LR/1