python - 在 Python 中使用正则表达式正确匹配嵌套括号

标签 python regex wikitext

我正在尝试使用 RegEx 解析 Wikipedia 文件转储。

我想匹配并删除一组括号之间的所有内容,包括括号本身。我还希望能够检查左括号后的第一个单词是否是某个单词,如果是,请勿删除它。就我而言,单个括号由两个字符组成,例如 {{}}

例如,考虑以下顺序:

{{{{}}{{}}{{}}}}不要删除我{{notmeeither}}

使用以下正则表达式:

{{(?!(notmeeither))(.|\n)*?\}}

导致匹配第一个{{{{}},从而产生左括号。使匹配变得贪婪并没有帮助,因为它会影响之间的文本以及不应该匹配的文本。我该怎么办?

最佳答案

regex您可以指定包 recursive patterns :

>>> import regex
>>> regex.sub(r"{{(?!(notmeeither))((?>[^{}]+|(?R))*)}}","","{{{{}}{{}}{{}}}} Don't delete me {{notmeeither}}")
" Don't delete me {{notmeeither}}"

关于python - 在 Python 中使用正则表达式正确匹配嵌套括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77573389/

相关文章:

regex - 将任何非数字转换为空白

c# - 正则表达式验证错误

html - 如何使用 Perl Text-MediawikiFormat 将 mediawiki 转换为 xhtml?

javascript - JS里面触发JS?

python - 为什么具有重新定义的 __getattr__() 的对象会抛出 TypeError?

python - 如何修复 xlsxwriter 中的对齐问题

python - 如何将 [] 与自定义 __builtin__ 列表一起使用?

regex - 使用正则表达式的LDAP搜索

php - 如何手动调用 MediaWiki 将 wiki 文本转换为 HTML?

python - 在Python中声明变量的这两种方式有什么不同?