繁体   English   中英

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

[英]Using regex to remove all text after the last number in a string

示范文本

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演示

regex匹配并捕获一个数字(带有(\\d) )到组1中,然后匹配一个或多个除数字( \\D+ )以外的字符,直到字符串( $ )的末尾。 替换模式仅是\\1 ,它是对我们在组1中捕获的数字的反向引用(以将其还原到结果字符串中)。

您可以在\\d+之前使用greedy .*以确保与最后一位数字匹配:

>>> print re.findall(r'^(.*\d+).*$', address)[0]
1234 Main St Smallville, KS 92348

正则表达式演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM