python - 取消维基百科同义词括号

标签 python regex

我想取消维基百科同义词括号。

这是一个简单的方法。

He is [[Korean]].

我可以移除支架。

这是另一个困难的问题。

He lives in [[Gimhae city|Gimhae]].

第一个(金海市)是维基百科文档标题。

所以我必须在括号中得到第二个。

欢迎任何建议。

最佳答案

您可以使用以下正则表达式:

\[{2}(?:[^|\]]*\|)?([^]]*)]{2}

并替换为\1

参见demo

这是正则表达式匹配的内容:

  • \[{2} - 2 个左方括号
  • (?:[^|\]]*\|)? - 除 |] 之外的 0 或 1 个字符序列(使用 [^|\]]*)和文字 |\| (注意它在字符类之外转义)<
  • ([^]]*) - 匹配并捕获到组 1,我们稍后将使用 \1 0 个或多个除右方括号之外的字符进行引用
  • ]{2} - 2 个右方括号(请注意,我们不必在这里转义它们,因为第一个 [ 已转义)。

Python snippet :

import re
p = re.compile(r'\[{2}(?:[^|\]]*\|)?([^]]*)]{2}')
test_str = "He lives in [[Gimhae city|Gimhae]]. He lives in [[Gimhae]]. "
result = re.sub(p, r"\1", test_str)
print(result) # => He lives in Gimhae. He lives in Gimhae. 

关于python - 取消维基百科同义词括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31718706/

相关文章:

php - 正则表达式 - 防止重复字符

python - 从 setup.py 构建一个万向轮

python - 如何向 wordpress 博客发表评论?

php - 替换此 HTML 标记的 preg_replace 正则表达式是什么?

python - 为什么 AWS 实例上的 Python 正则表达式比具有相似规范的本地 mac OS X 慢 5 倍?

将排除捕获组的正则表达式

python - 如何从相机(或网络摄像头)在 python 中捕获视频(和音频)

python - 在正则表达式中,[\w*] 是什么意思?

Python 用户创建脚本

java - 正则表达式允许字母和仅出现一次的选定特殊字符