正则表达式通过忽略所需组之间的特定匹配来返回所有/多个匹配项[关闭]

问题描述 投票:0回答:1

我想要下面文本的正则表达式

 \editable[blab]{\textit{anna karenina}}

在这里 ditable 很常见,所以我们需要在正则表达式中添加该关键字。 我希望方括号内的内容作为匹配 1,大括号内的内容作为匹配 2。

但是在这里我有一个条件,它可能有多个大括号,所以我们可以添加一个条件,比如在大括号开始之后它不应该是 \,如果没有考虑大括号并返回里面的值

所以就我而言,我的价值观是

Blah
anna karenina

我尝试了多个正则表达式,但它们不起作用

当我尝试这个正则表达式时

 r"\\editable\[(.*?)\]{\\.*\{(.*?)\}}"

这符合我的要求,但它不会返回文本中的所有匹配项,它只返回一个。

python regex search nested match
1个回答
0
投票

您可以尝试使用这个正则表达式

\\editable\[(.*?)\]{\\.*\{(.*?)\}}

代码:

text = "\\editable[blab]{\\textit{anna karenina}}"
pattern = r"\\editable\[(.*?)\]{\\.*\{(.*?)\}}"
match = re.search(pattern, text)

print(match.group(1))
print(match.group(2))

输出:

blab
anna karenina

更新1:

要处理具有多种模式的文本,

import re

text = "\\editable[blab]{\\textit{anna karenina}} and \\editable[another]{\\xyz{some example}}"

pattern = r"\\editable\[(.*?)\]{\\(?:.*?)\{(.*?)\}}"
results = re.findall(pattern, text)

for result in results:
    square_bracket_content, flower_bracket_content = result
    print("Square bracket content:", square_bracket_content)
    print("flower bracket content:", flower_bracket_content)

输出:

Square bracket content: blab
flower bracket content: anna karenina
Square bracket content: another
flower bracket content: some example
© www.soinside.com 2019 - 2024. All rights reserved.