原字符串:
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 AV1 2021-02-23 13:59:20 +08:00 ![]() 正则语法方括号里的每个字符是独立的,比如[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) |