Python 使用re.search()的原始字符串?
我正在尝试学习如何使用python正则表达式。我希望以下程序在输入字符串中搜索字符串“N\S\A”。我读到(),如果你想处理“\”字符,你必须把字符串变成原始字符串。但我把r放在匹配字符串的前面,它仍然不起作用。(无论inword是'NSA'还是'N\S\A'…)Python 使用re.search()的原始字符串?,python,regex,Python,Regex,我正在尝试学习如何使用python正则表达式。我希望以下程序在输入字符串中搜索字符串“N\S\A”。我读到(),如果你想处理“\”字符,你必须把字符串变成原始字符串。但我把r放在匹配字符串的前面,它仍然不起作用。(无论inword是'NSA'还是'N\S\A'…) 为什么这不起作用?我能做些什么来修复它?您不需要正则表达式 在操作符中使用: >>> inword = 'Hello N\S\A!' >>> r'N\S\A' in inword True 如果确
为什么这不起作用?我能做些什么来修复它?您不需要正则表达式 在操作符中使用
:
>>> inword = 'Hello N\S\A!'
>>> r'N\S\A' in inword
True
如果确实需要正则表达式,则需要转义\
本身,因为\S
匹配非空格字符(\A
也有特殊含义):
>inword='Hello N\S\A!'
>>>重新搜索(r'N\S\A',inword)
>>>重新搜索(r'N\\S\\A',inword)
\
如果未指定UNICODE标志,则匹配任何非空白
性格这相当于设置区域设置[^\t\n\r\f\v]
标志对非空白匹配没有额外影响。如果设置了UNICODE,
然后是Unicode字符中未标记为空格的任何字符
属性数据库已匹配
\A
仅在字符串的开头匹配
从要将反斜杠作为字符包含在正则表达式中而没有任何特殊含义,必须使用另一个反斜杠对其进行转义
在您的情况下,您应该使用:
mword = re.search(r'N\\S\\A',inword)
原始字符串使python将反斜杠视为普通字符,但它在正则表达式中仍然具有特殊意义。这很公平……但如果必须使用正则表达式,我会怎么做?哦,好的,谢谢,这正是我需要的。我会尽快接受你的回答。但是为什么你认为在正则表达式前面加上一个r
不能做同样的工作呢?它不是要求Python把正则表达式中的元素看作文字字符吗?@ USS1993,使用原始字符串是在Python字符串中生成逃逸<代码> \/COD>。正则表达式本身也需要转义。请阅读(第二段提到。)
>>> inword = 'Hello N\S\A!'
>>> re.search(r'N\S\A', inword)
>>> re.search(r'N\\S\\A', inword)
<_sre.SRE_Match object at 0x7f804ea33370>
mword = re.search(r'N\\S\\A',inword)