原字符串:
str = 'A\B\\C\\\D\\\\E'
把原字符串中的反斜杠,全部改成逗号 ,
out1 = re.sub(r'[\\]', ', ', str)
out2 = re.sub(r'[\\\\]', ', ', str)
out1 和 out2 输出结果是一样的,看到有不一样的用法,哪个是更规范的匹配方式?
1
xuboying 2021-02-23 13:12:32 +08:00
正则语法方括号里重复多个的内容不是和写一个是一个意思么,这个和 python 没关系吧?
|
2
no1xsyzy 2021-02-23 13:23:21 +08:00
首先你要搞懂正则的语法
然后你要搞懂正则没有 “更规范的匹配方式” 在解释这个问题时,建议你拿个显示正则的 AST 的工具看一下。 [\\] ~ (any-of \x1c) [\\\\] ~ (any-of \x1c \x1c) |
3
DOLLOR 2021-02-23 13:59:20 +08:00 2
正则语法方括号里的每个字符是独立的,比如[abc]匹配的是"a"、"b"、"c",而不是连续的"abc"字符串。所以,你在方括号里无论写几个\,它都是匹配一个\,意义都是一样的。
|
4
julyclyde 2021-02-23 15:34:00 +08:00
raw string 试试?就不需要 escape 了吧
|
5
RIcter 2021-02-23 15:37:30 +08:00
[] 的问题,参见 #3
re.sub(r'\\\\', ', ', str) -> 'A\\B\\C, D, E' |
6
0clickjacking0 2021-02-23 16:28:55 +08:00
楼主的意思是每一个\都要替换成逗号吗
|
7
loli 2021-02-23 17:39:28 +08:00
为什么要加[]?
后面没{}单纯一个[]有什么意义吗? |
8
imlinhanchao 2021-02-24 09:25:05 +08:00
re.sub(r'\\+', ', ', str)
|