如何匹配包含正则表达式中的特殊字符的整个单词

时间:2015-12-17 20:58:12

标签: regex

在正则表达式中有没有办法在PCRE语法的整个文本区域中转义特殊字符?

例如。 hey+Im+A+Single+Word+Including+The+Pluses+And.Dots

通常匹配正则表达式中的确切字符串,我必须在上面的字符串中使用+转义每个./。这意味着如果字符串是变量,则必须寻找特殊字符并手动转义它们。通过告诉正则表达式转义文本块中的所有特殊字符,有更简单的方法吗?

这背后的动机是将其附加到更大的正则表达式,所以即使有更简单的方法来获得完全匹配,它们也不适用于此。

2 个答案:

答案 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']