一个字符串 string_a 中可能有反斜杠 \ 这个字符,用 re.sub()过滤掉它,为什么要打三个反斜杠 \\\ 才行呢?
这个 \ 到底谁在转义谁呀
re.sub('[\\\]', 'repl', string_a)
一个字符串 string_a 中可能有反斜杠 \ 这个字符,用 re.sub()过滤掉它,为什么要打三个反斜杠 \\\ 才行呢?
这个 \ 到底谁在转义谁呀
re.sub('[\\\]', 'repl', string_a)
|
noe132Sep 22, 2017 via Android
1
我想到了 JavaScript 的正则构造函数,如果要匹配 /得打 4 个
new RegExp('////') |
|
noe132Sep 22, 2017 via Android
2
斜杠打反了。。。
|
|
charoveSep 22, 2017
3
bash [[]]也很反人类啊。
|
|
rogerchenSep 22, 2017
4
善用 raw string,'[\\\]' --> r'\\',话说我很难理解为什么要用 '[]' 去把 \ 装起来
|
|
6
你确定不应该是 '[\\\\]' 么
'[\\\]' 对应了 4 个字符,[ 是 [,\\ 是 \,\] 是 \] 因为 python 在 escape 的时候,\ 后面接的字符不是有效的需转义的字符的话,\ 会被正常返回,所以 >>> print '\]' \] >>> '[\\\]' == '[\\\\]' True >>> print '[\\\\]' [\\] 至于为什么要两个 \,因为在 regex 里,想要表达字面 \ 需要转义 |
|
7
@hahastudio 我上面的回复里修正了,标准的应该是 4 个,只是写三个好像现在的新解释器输出结果是一样的。
|
|
CookySep 22, 2017 via Android
8
尽量用 raw string,不然自己看都费尽
|
|
OskSep 22, 2017 via Android
9
为什么不用 raw string...
|