我想在Python中使用以Perl编写的常规表达式:
$text =~ s/\[\[category:([^|\]]*)[^]]*\]\]/[[$1]]/ig;
任何人都知道如何做到这一点?我还需要提取捕获组(Perl中的$1
)。
答案 0 :(得分:0)
在python中,您使用re.sub
而不是perl s///
运算符。您将正则表达式字符串作为第一个参数。 "原始字符串的特殊语法"不需要\
逃脱的人,比如r' \',会帮助你。替换作为第二个参数,您还使用\1
而不是$1
来进行backref。 python中没有主题变量这样的东西,所以你需要显式传递源字符串作为第三个参数。然后将正则表达式标志添加为专用命名参数,它们的值存储在re.I
,re.S
,...常量中。您不需要g
标记,因为re.sub
默认为全局:
import re
text = re.sub(r'\[\[category:([^|\]]*)[^]]*\]\]', '[[\1]]',
text, flags=re.I)