使用正则表达式删除字符串

时间:2016-02-25 20:09:56

标签: python regex 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])并且完全被难倒了。正则表达式绝对不是我强大的领域。有什么建议吗?

2 个答案:

答案 0 :(得分:3)

找到字符串中的最后一位数字,然后使用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 }})。替换模式仅仅是$,是对我们使用Group 1捕获的数字的反向引用(在结果字符串中恢复它)。

答案 1 :(得分:2)

您可以在false之前使用贪婪的var newObj = playerObj.players.reduce(function(old,itm){ old[itm.name] = itm.number return old; }, {}); 来确保匹配最后的数字:

.*

Regex Demo