Skip to main content
 首页 » 编程设计

python之使用正则表达式删除字符串中最后一个数字之后的所有文本

2025年05月04日46freeliver54

示例文本

1234 Main St Smallville, KS 92348Small County  

应该产生:

1234 Main St Smallville, KS 92348 

示例代码:

return re.match(r'([0-9]+)(?!.*[0-9])', address) 

返回:

None 

我已经尝试了所有我能想到的可能模式(例如/d 而不是 [0-9]),但完全被难住了。正则表达式绝对不是我的强项。有什么建议吗?

请您参考如下方法:

找到字符串中的最后一个数字,然后用re.sub 删除它后面的所有字符:

import re 
address = "1234 Main St Smallville, KS 92348Small County " 
address = re.sub(r'(\d)\D+$', r'\1', address) 
print(address) # => 1234 Main St Smallville, KS 92348 

参见 IDEONE demo

正则表达式匹配并捕获第 1 组中的一个数字(使用 (\d)),然后匹配一个或多个数字以外的字符(\D+)向上到字符串的末尾 ($)。替换模式仅仅是 \1,是对我们用第 1 组捕获的数字的反向引用(以在结果字符串中恢复它)。