首页 > 解决方案 > python字符串和正则表达式中斜线的使用

问题描述

例子:

s = r't\s t t\\s'
print(re.findall('\s',s))
print(re.findall('\\s',s))

我发现这两个语句打印的结果是一样的:[' ', ' '],表示\s\\s在 Python 的字符串类中是一样的。实际上,当我在 Python 的交互界面中键入以下代码时,我得到了这个:

>>> str1 = '\s'
>>> str1
'\\s'

因此,python 似乎会转换\s\\s. 为什么 Python 会这样做,这是为了什么?在 Java 等其他语言中是否相同?

实际上,我要问的是:在 Python 中,如果我想匹配空格,我输入的正则表达式和字符串都可以是"\s",对吗?但是,在 Java 中,正则表达式应该是"\s",而字符串应该是"\\s"。这两种语言似乎对 String "\s" 的处理方式不同。为什么?

标签: pythonregexstringescaping

解决方案


Python 只是在转义它,所以当它看到一个字母继续的“\”并且如果该字母没有任何特殊含义,那么 Python 实际上会转义反斜杠,而不是抛出任何错误。

Python 交互式接口用于repr返回包含对象可打印表示的字符串。因此,该函数添加了额外的反斜杠以表明它是文字反斜杠。

如果您使用 print 函数显示 的值str1,您将在标准输出中打印它,只需 1 个反斜杠。

看这个例子:

str1 = '\s'

print str1
print str1.__repr__()

推荐阅读