Regex 使用正则表达式否定组

Regex 使用正则表达式否定组,regex,Regex,我想使用正则表达式通过对组求反来提取内容(而不是执行搜索和替换) 为了得到一个信息框块,我使用了下面的正则表达式 (\{\{Infobox(?:.*?)^\}\}) 如何否定该组,以便返回不带信息框的文本。 我试过很多组合,比如 (.*(?!(?:\{\{Infobox(?:.*?)^\}\})).*) 下面是我试图提取的示例文本 <username>Majorclanger</username> <id>817248</id> </co

我想使用正则表达式通过对组求反来提取内容(而不是执行搜索和替换)

为了得到一个信息框块,我使用了下面的正则表达式

(\{\{Infobox(?:.*?)^\}\})
如何否定该组,以便返回不带信息框的文本。 我试过很多组合,比如

(.*(?!(?:\{\{Infobox(?:.*?)^\}\})).*)
下面是我试图提取的示例文本

<username>Majorclanger</username>
<id>817248</id>
</contributor>
<minor />
<comment>rm unneeded hyphen</comment>
<text xml:space="preserve">{{sprotected2}}
{{Infobox MLB player
| birthplace = {{city-state|Riverside|California}}
| debutdate = May 30
| debutyear = 1986
}}

==Early life==
{{Infobox Person
|parents       = 
|relatives     = 
|signature     = 
|website       = 
}}

Born in {{city-state|Riverside|California}}, Bonds grew up in {{city-state|San Carlos|California}} and attended 
Majorlanger
817248
rm不需要的连字符
{{sprotected2}}
{{信息盒MLB播放器
|出生地={市州|河滨|加利福尼亚}
|截止日期=5月30日
|德比特耳=1986
}}
==早年生活==
{{Infobox个人
|父母=
|亲属=
|签名=
|网站=
}}
邦兹出生于{加利福尼亚州城市州{Riverside},在{加利福尼亚州圣卡洛斯城市州}长大,并参加了

这可能取决于您使用的语言的regex方言,在Python中,您可以执行以下操作:

pattern = re.compile('{{Infobox.*?\n}}', re.DOTALL)
print re.sub(pattern, '', s)

[^}}]
[^}]
相同(
[^…]
表示“不在…”中的任何值)。对。一个更严重的问题是,它无法在此表单中正确删除城市状态模板。让我想想。。