Python 使用re.search()的原始字符串?

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 如果确

我正在尝试学习如何使用python正则表达式。我希望以下程序在输入字符串中搜索字符串“N\S\A”。我读到(),如果你想处理“\”字符,你必须把字符串变成原始字符串。但我把r放在匹配字符串的前面,它仍然不起作用。(无论inword是'NSA'还是'N\S\A'…)


为什么这不起作用?我能做些什么来修复它?

您不需要正则表达式

在操作符中使用

>>> 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)