import re
response = 'string contains+ as special character'
re.match(response, response)
print match
字符串匹配不成功,因为字符串包含特殊字符'+'。如果还有其他特殊字符,则匹配成功。 即使将斜杠放回特殊字符中,它也不匹配。 两者都不匹配:
response = r'string contains\+ as special character'
response = 'string contains\\+ as special character'
当字符串是变量并且具有此特殊字符时,如何匹配它。
答案 0 :(得分:0)
如果要在正则表达式中使用任意字符串但将其视为纯文本(因此特殊的正则表达式字符不会生效),则可以使用re.escape
来转义整个字符串。
>>> import re
>>> response = 'string contains+ as special character'
>>> re.match(re.escape(response), response)
<re.Match object; span=(0, 37), match='string contains+ as special character'>
答案 1 :(得分:0)
在一般情况下,任意字符串都不匹配 ,当然,对于不包含正则表达式元字符的任何字符串,这都是正确的。
有几个字符是正则表达式元字符,但它们自身不匹配。特殊情况是.
,它匹配任何字符(默认情况下,换行符除外),因此当然也匹配文字.
,但不是唯一的。量词*
,+
和?
以及广义重复运算符{m,n}
修改前面的正则表达式,保留圆括号以分组|
对于交替,方括号定义了字符类,最后当然反斜杠\
用于转义任何前面的元字符或它本身。
根据要完成的工作,可以将字符串转换为与re.escape()
完全匹配该文字字符串的正则表达式;但是也许您只需要纠正一个错误的假设即可。