使用正则表达式否定组

时间:2012-05-19 17:26:50

标签: regex

我想使用正则表达式通过否定一个组来提取内容(而不是进行搜索和替换)

要获取信息块,我使用以下正则表达式。

(\{\{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 

1 个答案:

答案 0 :(得分:1)

它可能取决于您正在使用的语言的正则表达式方言,在Python中您可以执行以下操作:

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