我试图用<br>
替换字符串中的所有\\n
和{
我尝试使用negative lookbehind处理以下表达式,但它没有返回正确的结果,因为所有的"n"
和{
import re
string = "this is a sample\\nstring\\\\ncontaining\nall cases\n\\n\n!"
re.sub(r"(?<!\\)([\\n\n]+)", r"<br>", string)
>>'this is a sample<br>stri<br>g<br>co<br>tai<br>i<br>g<br>all cases<br>!'
预期产量
^{pr2}$
也许这会找到你想要的,然后你可以用
<br>
:(?<!\\)(\\)n|(?<!\\)(\\\\)n
正则表达式具有匹配}。您的lookbehind逻辑是正确的,您只需将character类更改为不同的子模式:
[\\n\n]
的字符类\
、n
或{\\{1,2}n
。在See regex in use here
(?<!\\)
确保前面的不是{\\{1,2}
匹配\
一次或两次n
逐字匹配替换:
<br>
备选方案:
(?<!\\)\\\\?n
,由@revo在问题下面的评论中提供代码
中的用法See in use here
^{pr2}$结果:
this is a sample<br>string\\\\ncontaining<br>all cases<br><br><br>!
这将产生魔力:
注意:它将替换换行符(“\n”)和转义的换行符(“\n”或r“\n”)。它不会转义“\\n”(或r“\n”)。 “\\\n”(反斜杠+换行符)变为“\\<;br>;”。在
也许,你真正想要的是:
^{pr2}$这将替换所有新行和所有转义的n(r“\n”)。r“\\n”不被替换。r“\\\n”再次被替换(转义反斜杠+转义n)。在
相关问题 更多 >
编程相关推荐