逃避部分正则表达式模式

时间:2010-01-11 09:25:52

标签: regex

我搜索构建由一些固定部分和变量(实际上是业务单位名称)组成的模式。实际上,变量很可能包含一些特定的正则表达式字符,这些字符可以被识别为正则表达式控制字符(即+或*)。

是否有任何正则表达式标记注意到模式子部分应仅被视为文本,并忽略特定的char含义?

某种:

regex_fixed_part [escape]business + unit[/espace] regex_fixed_part

此处业务+单元将由解析器替换为 business \ + unit

显然,我可以手动转义所有正则表达式字符,但我搜索的是更整洁的方法。

由于

4 个答案:

答案 0 :(得分:4)

许多正则表达式都有一个自动转义元字符的实用工具方法。 Java使用Pattern.quote(String)执行此操作,PHP具有类似的功能:preg_quote(string)。许多PCRE实现还支持\Q\E转义序列。 \Q将让正则表达式引擎将其后面的所有字符解释为普通文字直到下一个\E

示例:

a\Q+*\Eb+

将匹配字符串a+*bbb

答案 1 :(得分:0)

用什么语言?

在python中:

import re
regex_fixed = re.escape("business + unit")

在php中,使用preg_quote()

答案 2 :(得分:0)

在Java中,如果您想手动执行,请使用Pattern.quote()"\\Qprotected part\\E"

答案 3 :(得分:0)

[[\]\^\-\\\/?*+$().|]替换为\$&(反斜杠后跟$&,匹配的字符串),并将全局标记替换为。