如何将这个perl正则表达式翻译成python?

时间:2014-04-02 01:52:31

标签: python regex perl

我想在Python中使用以Perl编写的常规表达式:

$text =~ s/\[\[category:([^|\]]*)[^]]*\]\]/[[$1]]/ig;

任何人都知道如何做到这一点?我还需要提取捕获组(Perl中的$1)。

1 个答案:

答案 0 :(得分:0)

在python中,您使用re.sub而不是perl s///运算符。您将正则表达式字符串作为第一个参数。 "原始字符串的特殊语法"不需要\逃脱的人,比如r' \',会帮助你。替换作为第二个参数,您还使用\1而不是$1来进行backref。 python中没有主题变量这样的东西,所以你需要显式传递源字符串作为第三个参数。然后将正则表达式标志添加为专用命名参数,它们的值存储在re.Ire.S,...常量中。您不需要g标记,因为re.sub默认为全局:

import re
text = re.sub(r'\[\[category:([^|\]]*)[^]]*\]\]', '[[\1]]', 
              text, flags=re.I)