提问人:Komal Rumade 提问时间:9/14/2023 最后编辑:Adrian MoleKomal Rumade 更新时间:9/17/2023 访问量:63
正则表达式通过忽略所需组之间的特定匹配来返回所有/多个匹配项 [已关闭]
Regex to return all/multiple matches by ignoring specific match in between the required groups [closed]
问:
我想要以下文本的正则表达式:
\editable[blab]{\textit{anna karenina}}
在这里,将很常见,因此我们需要在正则表达式中添加该关键字。
我希望方括号内的内容作为匹配 1,大括号内的内容作为匹配 2。\editable
我还有一个条件,它可能有多个大括号,因此我们可以添加一个条件,例如在大括号开始后,它不应该是,如果不是,请考虑这些大括号并返回里面的值。\
所以,就我而言,我的价值观将是:
Blah
anna karenina
我尝试了多个正则表达式,包括下面的正则表达式,但它们不起作用。
r"\\editable\[(.*?)\]{\\.*\{(.*?)\}}"
这符合我的要求,但它不会返回文本中的所有匹配项;它只返回一个。
答:
0赞
shaik moeed
9/14/2023
#1
你可以尝试使用这个正则表达式,
\\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
评论
0赞
Komal Rumade
9/14/2023
\text它不会被修复,可能有类似 \bold{\bah{mytext}} 的东西
0赞
Komal Rumade
9/14/2023
尝试过但没有给出任何匹配
0赞
shaik moeed
9/14/2023
你怎么努力?您可以通过编辑您的帖子来共享代码吗?
1赞
Komal Rumade
9/14/2023
尝试过并且正在工作
0赞
Komal Rumade
9/14/2023
我还有一个问题,好像我的文本包含多个这样的模式怎么办?
评论