python - 用python中的单词替换特殊字符

标签 python regex

对于以下字符串:

s = The \r\n sun shines, that's fine [latex]not\r\nt for \r\n everyone[/latex] and if it rains, \r\nit Will Be better. .

如果我想替换\n\r通过 ' '[latex] 之间和 [/latex] ,我可以使用:

re.sub("\[latex\][^]]*\[/latex\]", lambda x:x.group(0).replace('\r\n',' '), s)

效果很好。

但是,如果输入是:

s = some\r\nthing\r\n[latex]\\[\x08egin{array}{*{20}{l}}\r\n{{\rm{dA}} = {\rm{wdy}}:}\\\r\n{{\rm{dF}} = {\rm{P}}\\;{\rm{dA}} = \rho {\rm{g}}\\left( {{\rm{H}}-{\rm{y}}} \right)\\;\\omega \\;{\rm{dy}}}\r\n\\end{array}\\][/latex]\r\n

我使用相同的表达方式,没有任何内容被替换。 知道我做错了什么吗?

最佳答案

问题是由于在第二个输入中 [/latex] 之前存在 ]。也最好使用原始字符串作为输入和正则表达式。

您可以使用此正则表达式进行搜索:

\[latex\].*?\[/latex\]

RegEx Demo

代码:

>>> s = r"some\r\nthing\r\n[latex]\\[\x08egin{array}{*{20}{l}}\r\n{{\rm{dA}} = {\rm{wdy}}:}\\\r\n{{\rm{dF}} = {\rm{P}}\\;{\rm{dA}} = \rho {\rm{g}}\\left( {{\rm{H}}-{\rm{y}}} \right)\\;\\omega \\;{\rm{dy}}}\r\n\\end{array}\\][/latex]\r\n"
>>> print re.sub(r"\[latex\].*?\[/latex\]", lambda x:x.group(0).replace(r'\r\n', ' '), s)
some\r\nthing\r\n[latex]\\[\x08egin{array}{*{20}{l}} {{\rm{dA}} = {\rm{wdy}}:}\\ {{\rm{dF}} = {\rm{P}}\\;{\rm{dA}} = \rho {\rm{g}}\\left( {{\rm{H}}-{\rm{y}}} \right)\\;\\omega \\;{\rm{dy}}} \\end{array}\\][/latex]\r\n

Code Demo

关于python - 用python中的单词替换特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39890943/

相关文章:

python - 在 Django 中为 ubuntu 11.10 设置 Postgresql 9.1 数据库

java - 在 java 中使用正则表达式修改 xml

Ruby 正则表达式从字符串中删除所有连续的字母

java - 在java中使用正则表达式提取两个特定单词之间的子字符串

regex - 合并以 "+"开头的连续行

python - 用于检查任何函数注释类型的装饰器

python - sqlalchemy session 执行搞乱了有效的 postgres 语法

python - NLTK : combining stanford tagger and personal tagger

python - 与 Scipy : shifted identity kernel - how is the computation done? 的图像卷积

javascript - 如何从链接中提取 href 属性并创建一个特定的模式?