You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Python正则表达式删除标点符号前后的数字?

解决分号前后数字串的移除问题

嘿,我完全懂你遇到的困扰!你想要移除分号前后所有相连的数字串,但之前用\d;\d没效果,是因为这个正则只能匹配「单个数字+分号+单个数字」的情况,而你需要匹配的是「一串数字+分号+一串数字」,不管这两串数字有多少位。

正确的正则表达式方案

你需要用量词来表示“一个或多个数字”,对应的实现代码如下:

import re
a = 'Car 1234 5678;91012 14567'
a_new = re.sub(r'\d+;\d+', '', a)
print(a_new)  # 输出: 'Car 1234 14567'

这里的+是正则里的核心量词,意思是「匹配前面的元素(这里是\d,代表单个数字)1次或多次」,这样不管分号前后是4位、5位还是其他位数的数字,都会被完整匹配并替换为空字符串,正好符合你的需求。

额外补充(如果有需要)

如果分号前后可能存在空格(比如5678 ; 91012这种场景),可以调整正则来忽略空格干扰:

a_new = re.sub(r'\d+\s*;\s*\d+', '', a)

其中\s*表示匹配0个或多个空白字符(空格、制表符等),这样即使分号前后有空格也能正确匹配移除。

内容的提问来源于stack exchange,提问作者Arnold Klein

火山引擎 最新活动