gpt4 book ai didi

python - 如何在python中的字符串中搜索最后一次出现的正则表达式?

转载 作者:太空狗 更新时间:2023-10-29 20:53:45 25 4
gpt4 key购买 nike

在 python 中,我可以像这样轻松地搜索字符串中第一次出现的正则表达式:

import re
re.search("pattern", "target_text")

现在我需要找到字符串中最后一次出现的正则表达式,这似乎不受 re 模块的支持。

我可以将字符串反转为“搜索第一次出现”,但我还需要反转正则表达式,这是一个更难的问题。

我也可以迭代从左到右查找所有出现的地方,只保留最后一个,但这看起来很尴尬。

是否有一种聪明的方法来找到最正确的事件?

最佳答案

一种方法是在正则表达式前加上(?s:.*) 并强制引擎尝试在最远的位置进行匹配并逐渐后退:

re.search("(?s:.*)pattern", "target_text")

请注意,此方法的结果可能不同于 re.findall("pattern", "target_text")[-1],因为 findall 方法搜索对于非重叠匹配,并不是所有可以匹配的子字符串都包含在结果中。

例如,在 abaca 上执行正则表达式 a.afindall 将返回 aba 作为唯一的匹配项,并且选择它作为最后一个匹配项,而上面的代码将返回 aca 作为匹配项。


另一种选择是使用 regex包,支持REVERSE匹配方式。

结果将或多或少与上述 re 包中的 (?s:.*) 方法相同。然而,由于我自己还没有尝试过这个包,所以不清楚反向引用在 REVERSE 模式下是如何工作的——在这种情况下可能需要修改模式。

关于python - 如何在python中的字符串中搜索最后一次出现的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33232729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com