【问题标题】:Getting the last occurrence of a match that is inside parenthesis using regular expressions使用正则表达式获取括号内最后一次匹配
【发布时间】:2021-03-26 05:13:57
【问题描述】:

我想使用正则表达式来获取句子中括号内的文本。但是,如果字符串出现两次或多次,我使用的模式会介于两者之间。我用谷歌搜索它,一些消息来源告诉我使用负前瞻和反向引用,但它没有按预期工作。我找到的例子是:Here,here

一个字符串的例子是:

s = "Para atuar no (GCA) do (CNPEM)"

我想要的是最后一次出现:"(CNPEM)"

我使用的模式是:

pattern = "(\(.*\))(?!.*\1)"

但是当我运行(使用 python 的 re 模块)时,我得到了这个:

output = (GCA) do (CNPEM)

在这种情况下,我怎样才能得到最后一次出现?

【问题讨论】:

  • 使用pattern = r'.*(\([^)]*\))'

标签: python regex string


【解决方案1】:

您可以在这里使用re.findall,然后访问最后一个匹配项:

s = "Para atuar no (GCA) do (CNPEM)"
last = re.findall(r'\(.*?\)', s)[-1]
print(last)  # (CNPEM)

【讨论】:

    猜你喜欢
    • 2016-08-22
    • 1970-01-01
    • 1970-01-01
    • 2016-02-13
    • 2011-07-18
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多