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