【发布时间】:2018-11-05 10:20:52
【问题描述】:
示例:
s = r't\s t t\\s'
print(re.findall('\s',s))
print(re.findall('\\s',s))
我发现这两条语句打印的结果是一样的:[' ', ' '],说明在Python的字符串类中\s和\\s是一样的。实际上,当我在 Python 的交互界面中输入以下代码时,我得到了这个:
>>> str1 = '\s'
>>> str1
'\\s'
看来python会将\s转换为\\s。为什么 Python 会这样做,这是为了什么?在 Java 等其他语言中是否也一样?
其实我要问的是:在 Python 中,如果我想匹配空格,我输入的正则表达式和字符串都可以是"\s",对吧?但是,在 Java 中,正则表达式应该是 "\s",而字符串应该是 "\\s"。这两种语言似乎对 String "\s" 的处理方式不同。为什么?
【问题讨论】:
-
在Java等其他语言中也一样吗? -- 是的,反斜杠被转义了。
-
@cricket_007 谢谢!所以如果我想匹配Java中的空格,字符串
"\s"或"\\s"都可以吗? -
"\s"是一个空格。"\\s"是一个反斜杠,后跟字符 s -
@cricket_007,谢谢!但实际上,我要问的是:在 Python 中,如果我想匹配空格,我输入的正则表达式和字符串都可以是
"\s"。但是,在Java中,regex应该是"\s",而String应该是"\\s",为什么这两种语言会有不同呢?
标签: python regex string escaping