Python正则表达式:除非另一个字符串存在于同一行上,否则如何替换字符串?

时间:2014-05-30 00:28:41

标签: regex python-2.7 mediawiki regex-negation pywikibot

我正在使用{em>“chœur”替换“choeur”来修复一些文章的拼写replace.py
mediawiki语法中还有文件链接:

[[Fichier:Menditte (Pyr-Atl, Fr) choeur de l'église.JpG|thumb|Chœur de l'église]]

编辑那种东西会破坏链接。我无法使用[],因为还有链接说明:

[[Fichier:JeronimosRoyalTombs.Jpg|thumb|right|Tombeaux de [[Jean III de Portugal]] (à gauche) et de [[Catherine de Castille]] (à droite) dans la choeur de l'église]]

在这种情况下,该法术应该是固定的 因此,如果同一行中有.jpg“choeur”之后我需要不进行编辑。

我的问题是我找不到在python regex

中处理布尔表达式的方法

1 个答案:

答案 0 :(得分:1)

您可以使用否定前瞻(?!...) (未跟随)

图案:

(?i)\b(ch)oe(urs?\b)(?!.*\.jpg\b)

替换:

$1œ$2

关于字边界:

字边界用于分隔\bchoeurs?\b\.jpg\b的字母,并且在大多数情况下可以完成工作。但是,请记住,单词边界不适用于此字符串:__choeur__。如果需要,可以用外观替换单词边界,例如:

(?:(?<=_)|\b)choeurs?(?=_|\b)