除了这两个,我正在尝试寻找其他方法:
# match last occurence of \d+, 24242 in this case
>>> test = "123_4242_24242lj.:"
>>> obj = re.search(r"\d+(?!.*\d)", test)
>>> obj.group()
'24242'
>>> re.findall(r"\d+", test)[-1]
'24242'
最佳答案
我相信您可以找到更聪明的正则表达式来执行此操作,但我认为您应该坚持使用 findall()
。
正则表达式很难阅读。不仅仅是别人:从你写一篇文章到现在 10 天过去了,你也会发现阅读起来也很困难。这使得它们难以维护。
除非性能至关重要,否则最好尽量减少正则表达式所做的工作。这条线...
re.findall(r"\d+", test)[-1]
...干净、简洁且一目了然。
关于python - 正则表达式匹配最后一次出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21822379/