在正则表达式中有没有办法在PCRE语法的整个文本区域中转义特殊字符?
例如。 hey+Im+A+Single+Word+Including+The+Pluses+And.Dots
通常匹配正则表达式中的确切字符串,我必须在上面的字符串中使用+
转义每个.
和/
。这意味着如果字符串是变量,则必须寻找特殊字符并手动转义它们。通过告诉正则表达式转义文本块中的所有特殊字符,有更简单的方法吗?
这背后的动机是将其附加到更大的正则表达式,所以即使有更简单的方法来获得完全匹配,它们也不适用于此。
答案 0 :(得分:2)
\Q
和\E
元字符之间的所有内容在PERL Compatible RegExes(PCRE)中被视为文字。所以在你的情况下:
\Qhey+Im+A+Single+Word+Including+The+Pluses+And.Dots\E
其他引擎很少支持这种语法。
答案 1 :(得分:0)
如果是python。您可以使用 re.escape(string)获取文字字符串
import re
search = 'hey+Im+A+Single+Word+Including+The+Pluses+And.Dots'
text = '''hey+Im+A+Single+Word+Including+The+Pluses+And.Dots
heyImmASingleWordIncludingThePlusessAndaDots
heyImASingleWordIncludingThePlusesAndxDots
'''
rc = re.escape(search)
#exactly first line in text
print(re.findall(rc,text))
#line two and three as it will + as repeat and . as any char
print(re.findall(search,text))
--------结果-------------------
[ '哎+ IM + A +单+字+包含+的+加号+ And.Dots'] ['heyImmASingleWordIncludingThePlusessAndaDots','heyImASingleWordIncludingThePlusesAndxDots']