python - 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" 的处理方式不同。为什么?
解决方案
Python 只是在转义它,所以当它看到一个字母继续的“\”并且如果该字母没有任何特殊含义,那么 Python 实际上会转义反斜杠,而不是抛出任何错误。
Python 交互式接口用于repr
返回包含对象可打印表示的字符串。因此,该函数添加了额外的反斜杠以表明它是文字反斜杠。
如果您使用 print 函数显示 的值str1
,您将在标准输出中打印它,只需 1 个反斜杠。
看这个例子:
str1 = '\s'
print str1
print str1.__repr__()
推荐阅读
- vue.js - 如何在 vue.js 中使用 vuex-oidc 实现 OIDC
- linux - Linux spin_lock_irqsave() 是否禁用 ARM FIQ 中断?
- java - Default Constructor not called while creating object in Java
- .htaccess - Htaccess Rewrite Post Method
- hazelcast-jet - Hazelcast Jet 具有 IMap 源和 OBJECT 内存格式
- python - 如何在 python3.8 中安装 pygame?
- python - Python在使用正则表达式时返回null
- python - 计算器类执行错误“名称未定义”
- html - bash 在 html 表中分组类似的行,后跟空行
- asp.net - 在 chrome 84 中重定向后,asp 网络表单会话超时