[英]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
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.