如果您查看此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
只是为了复制& pasteness:
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)
答案 0 :(得分:2)
您可以将re.sub
与
\[WIKI_LINK:[^][]*@([^]]+)]
请参阅regex demo
<强>详情
\[WIKI_LINK:
- 文字子串[WIKI_LINK:
[^][]*
- 除[
和]
之外的任何0 +字符@
- @
字符([^]]+)
- 第1组(从替换模式引用\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