Regex 转义部分正则表达式模式

Regex 转义部分正则表达式模式,regex,Regex,我搜索构建一个由一些固定部分和一个变量(实际上是业务单元名称)组成的模式。事实上,变量很可能包含一些特定的正则表达式字符,这些字符可以识别为正则表达式控制字符(即+或*) 是否有任何正则表达式标记注意到模式子部分只应被视为文本,而忽略特定的字符含义 某种程度上: regex_fixed_part [escape]business + unit[/espace] regex_fixed_part 这里,business+unit将在解析器中替换为business\+unit 显然,我可以手动转义

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

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

某种程度上:

regex_fixed_part [escape]business + unit[/espace] regex_fixed_part
这里,business+unit将在解析器中替换为business\+unit

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

谢谢什么语言

在python中:

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

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

许多正则表达式都有一个自动转义元字符的实用方法。Java使用
Pattern.quote(String)
实现这一点,PHP有一个类似的函数:
preg_quote(String)
。许多PCRE实现还支持
\Q
\E
转义序列
\Q
将允许正则表达式引擎将其后面的所有字符解释为普通文本,直到下一个
\E

例如:

a\Q+*\Eb+

将字符串
a+*bbb

替换为
[[\]\^-\\\\/?*+$().\\\]
与启用全局标志的
\$&
(反斜杠后接
$&
,匹配的字符串)。

在PHP中,preg\\\\\\\\/?*+$()。在PHP中,应使用
preg\\\\\\\$
addslashes
用于SQL中使用的转义字符串。我更喜欢独立于语言。我在C#中,为此,我可以使用Regex.Escape方法。但我想在正则表达式模式中直接拥有这种能力,这正是我要搜索的(很遗憾,我自己没有找到),不幸的是,在C#124; ArgumentException:Unrecogned escape sequence\Q中似乎无法识别。那么你就不走运了。据了解,只有JGsoft引擎、Perl、PHP和Java支持
\Q..\E
。看起来您需要Regex.Escape(正如您自己已经提到的)。@camus-根据,这不受.net支持。想必,您无论如何都必须构建字符串,因此
Regex.Escape
不会使它太复杂。是的,最后我使用Regex.Escape就是为了这个目的。这样就可以了,但是有点不清楚这个功能的缺失。谢谢