如何迭代所有匹配的组?

2024-10-06 14:24:31 发布

您现在位置:Python中文网/ 问答频道 /正文

如果您看一下这个pythex示例,您可以看到表达式将获得WIKI_LINK的实际文本:

[WIKI_LINK: Whatever@Example]

但是,我不知道如何使用Python的re包得到结果。search()match()findall()finditer()没有给出匹配项的列表。你知道吗

我的目标是用字符串中的实际显示文本替换所有[WIKI_LINK: ..]表达式。你知道吗

Text [WIKI_LINK: Whatever@Example] text [WIKI_LINK: Whatever@Example]

会变得公正

Text Example text Example

只是为了复制和粘贴:

import re

text = 'Text [WIKI_LINK: Example@Whatever] text [WIKI_LINK: Example@Whatever]'

p_wiki_link = re.compile(r'\[WIKI_LINK:.*@(?P<WIKI_LINK>[^\]]+)')

for f in re.finditer(p_wiki_link, text):
    print(f)

Tags: text文本re示例search表达式examplewiki
1条回答
网友
1楼 · 发布于 2024-10-06 14:24:31

可以将re.sub

\[WIKI_LINK:[^][]*@([^]]+)]

参见regex demo

细节

  • \[WIKI_LINK:-文字子串[WIKI_LINK:
  • [^][]*-除[]之外的任何0+字符
  • @-a@字符
  • ([^]]+)-group1(用替换模式中的\1反向引用引用引用):除]之外的任何1+字符
  • ]-文字]字符。你知道吗

参见Python demo

import re
text = 'Text [WIKI_LINK: Example@Whatever] text [WIKI_LINK: Example@Whatever]'
p_wiki_link = re.compile(r'\[WIKI_LINK:[^][]*@([^]]+)]')
print(p_wiki_link.sub(r'\1', text))
# => Text Whatever text Whatever

相关问题 更多 >