我正在尝试用python2.7构建regex。你知道吗
我有这个密码:
expression = u"(|\s|[.!?\\-])+?(\b%s\b)(\s|[.!?\\-]|\Z)+?" % term
如果我的术语是“技术”,那么我希望得到:
(|\s|[.!?\\-])+?(\btechnologies\b)(\s|[.!?\\-]|\Z)+?
然而,我得到的是:
(|\\s|[.!?\\-])+?(\btechnologies\b)(\\s|[.!?\\-]|\\Z)+?
\s和\Z中的\字符加倍。以前,我用r字符串(r“..regex…”)代替unicode字符串,我的\b字符也会加倍。现在,如果不使用r“”,\b是我所期望的,但是,\s和\Z仍然会加倍。你知道吗
此外,我还编写了一个难看的hack,expression.replace("\\\\", "\\")
,希望去掉多余的斜杠。但是,它不起作用。你知道吗
我怎样才能去掉多余的斜杠?你知道吗
谢谢!你知道吗
编辑1:
加上r会让事情变得更糟。你知道吗
输入1:expression = u"(|\s|[.!?\\-])+?(\b%s\b)(\s|[.!?\\-]|\Z)+?" % term
输出1:(|\\s|[.!?\\-])+?(\btechnologies\b)(\\s|[.!?\\-]|\\Z)+?
输入2:expression = r"(|\s|[.!?\\-])+?(\b%s\b)(\s|[.!?\\-]|\Z)+?" % term
输出2:(|\\s|[.!?\\\\-])+?(\\btechnologies\\b)(\\s|[.!?\\\\-]|\\Z)+?
编辑2:
我发现了窃听器,它和替身无关。我在这里讲完后再详细说明。这和re2有关。你知道吗
在字符串开头加上r 所以呢
字符串开头的As r关键字告诉python解释器将其视为原始字符串。所以所有的逃逸符都被视为普通符
相关问题 更多 >
编程相关推荐