python - 匹配 Python 正则表达式中的\[\]

标签 python regex

我正在尝试替换表单的所有表达式

\[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/

相关文章:

python - 如何使用Python kivy在启动时确定Spinner值

regex - R : how to differentiate between inner and innermost brackets using regex

正则表达式从 node_modules 中排除文件夹

php - MySQL选择查询内部连接表,有2个针对不同表的正则表达式

python - doc2vec - python 中 doc2vec 训练和 infer_vector() 的输入格式

python - 复制表 - Openpyxl : type object 'Workbook' has no attribute 'copy_worksheet'

python - 选定单元格的行号和列号

java - 选择字符串中的第三个数字

java - 使用正则表达式在索引附近的未封闭组

python - 通过 arg 执行函数