与在RegEx中强制metacharecter作为普通字符有关

时间:2013-01-08 11:30:49

标签: java regex

在oracle文档中,下面的语句就在那里。

metachatecters是<([{\^-=$!|]})?*+.>

There are two ways to force a metacharacter to be treated as an ordinary character:

    * precede the metacharacter with a backslash, or
    * enclose it within \Q (which starts the quote) and \E (which ends it).

我理解的第一种方式。

任何人都可以详细解释第二种方式吗?

由于

2 个答案:

答案 0 :(得分:3)

* enclose it within \Q (which starts the quote) and \E (which ends it).

考虑元字符$,现在您希望将其视为普通字符,使用第二种方法,您必须将$括在\Q\E之间,如下所示:

 "\\Q$\\E" (eqvivalent to `\\$`)

但请注意,您仍然必须使用额外的反斜杠转义\Q\E,因为它们不是有效的转义序列。

答案 1 :(得分:0)

有一种特殊的方法Pattern.quote(String)。这就是内部基本上做的事情

    int slashEIndex = s.indexOf("\\E");
    if (slashEIndex == -1)
        return "\\Q" + s + "\\E";

如果字符串包含"\\E"个序列,它将逃脱它们