我正在尝试替换表单的所有表达式
\[something\]
在字符串中
\[<img src='something'>\]
由于 \
和 [
]
是特殊字符,我需要将它们分隔开(所以 \\
, \[
和 \]
),因此我的代码是
def repl(m):
return "<img src='"+m.group(1)+"'>"
print re.sub("\\\[(.*?)\\\]", repl, "frfrfr\nfrrffr<p>\[something\]</p>frff\nfrfrr", re.S)
但是,这会返回原始字符串。有人可以指出我的错误吗?
最佳答案
正确转义\
,或使用r'raw string'
,如下所示。
>>> print re.sub(r"\\\[(.*?)\\\]", repl, "frfrfr\nfrrffr<p>\[something\]</p>frff\nfrfrr", flags=re.S)
frfrfr
frrffr<p><img src='something'></p>frff
frfrr
>>> print re.sub("\\\\\\[(.*?)\\\\\\]", repl, "frfrfr\nfrrffr<p>\[something\]</p>frff\nfrfrr", flags=re.S)
frfrfr
frrffr<p><img src='something'></p>frff
frfrr
更新
re.sub
的第四个参数是count
,而不是flags
。要指定标志,请使用关键字参数。否则,re.S
被识别为 count
。
>>> print re.sub(r"\\\[(.*?)\\\]", repl, "frfrfr\nfrrffr<p>\[something\nblah\]</p>frff\nfrfrr", re.S)
frfrfr
frrffr<p>\[something
blah\]</p>frff
frfrr
>>> print re.sub(r"\\\[(.*?)\\\]", repl, "frfrfr\nfrrffr<p>\[something\nblah\]</p>frff\nfrfrr", flags=re.S)
frfrfr
frrffr<p><img src='something
blah'></p>frff
frfrr
关于python - 匹配 Python 正则表达式中的\[\],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19792400/