我正在try 用RegEx解析维基百科的文件转储.

我希望匹配并删除一组括号之间的所有内容,包括括号本身.我还希望能够判断左方括号后的第一个单词是否是某个单词,如果是,请不要删除它.在我的例子中,单个括号由两个字符组成,比如{{}}.

例如,请考虑以下顺序:

{{{{}}{{}}{{}}}} Don't delete me {{notmeeither}}

使用以下正则表达式:

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

结果匹配前{{{{}}个,从而产生剩余的方括号.让匹配变得贪婪无济于事,因为它会影响中间的文本以及不应该匹配的文本.我该怎么做呢?蒂娅.

编辑:使需求更加具体

推荐答案

使用regex程序包,您可以指定递归模式:

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

编辑(自问题更改后):

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

Python相关问答推荐

使用plotnine和Python构建地块

_repr_html_实现自定义__getattr_时未显示

运行终端命令时出现问题:pip start anonymous"

在Polars(Python库)中将二进制转换为具有非UTF-8字符的字符串变量

如何在Python中并行化以下搜索?

在vscode上使用Python虚拟环境时((env))

将JSON对象转换为Dataframe

名为__main__. py的Python模块在导入时不运行'

isinstance()在使用dill.dump和dill.load后,对列表中包含的对象失败

如何使用SentenceTransformers创建矢量嵌入?

将标签移动到matplotlib饼图中楔形块的开始处

巨 Python :逆向猜谜游戏

如何在Python Pandas中填充外部连接后的列中填充DDL值

语法错误:文档. evaluate:表达式不是合法表达式

有没有办法让Re.Sub报告它所做的每一次替换?

Scipy差分进化:如何传递矩阵作为参数进行优化?

极点用特定值替换前n行

某些值的数值幂和**之间的差异

了解如何让库认识到我具有所需的依赖项

为什么这个正则表达式没有捕获最后一次输入?