我想要下面文本的正则表达式
\editable[blab]{\textit{anna karenina}}
在这里 ditable 很常见,所以我们需要在正则表达式中添加该关键字。 我希望方括号内的内容作为匹配 1,大括号内的内容作为匹配 2。
但是在这里我有一个条件,它可能有多个大括号,所以我们可以添加一个条件,比如在大括号开始之后它不应该是 \,如果没有考虑大括号并返回里面的值
所以就我而言,我的价值观是
Blah
anna karenina
我尝试了多个正则表达式,但它们不起作用
当我尝试这个正则表达式时
r"\\editable\[(.*?)\]{\\.*\{(.*?)\}}"
这符合我的要求,但它不会返回文本中的所有匹配项,它只返回一个。
您可以尝试使用这个正则表达式,
\\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