我了解到“r"\n"
是一个包含'\'
和{"\n"
是一个包含换行符的单字符字符串。正则表达式通常使用这种原始字符串表示法用Python代码编写,“r"\n"
相当于"\\n"
来表示两个字符串'\'
和{
我用印刷的方法来测试它,它很管用
>>>print(r"\n") or print("\\n")
'\n'
但是,当我在regex中测试时
^{pr2}$当我试过的时候,效果很好
>>>re.findall(r"\\d+", '12 cats, 10 dogs, 30 rabits, \d is here')
['\\d']
>>>re.findall("\\\d+", '12 cats, 10 dogs, 30 rabits, \d is here')
['\\d']
>>>re.findall("\\\\d+", '12 cats, 10 dogs, 30 rabits, \d is here')
['\\d'] # Even four backslashes
为什么?这是否意味着我必须在使用regex时再添加一个反斜杠以确保它是一个原始字符串?在
"\d+"
起作用的原因是,"\d"
在Python字符串中不是一个正确的转义序列,Python只是将其视为后跟“d”的反斜杠,而不是产生语法错误。在因此}都是等价的,它们表示一个包含一个反斜杠和一个d的字符串。regex引擎看到这个反斜杠+“d”并将其解释为“匹配任何数字”。在
"\d"
、"\\d"
和{另一方面,}都包含两个反斜杠,后跟一个“d”。这告诉regex引擎匹配后跟“d”的反斜杠。在
"\\\d"
,"\\\\d"
和{相关问题 更多 >
编程相关推荐