1

在 oracle 文档中,有以下语句。

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

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).

我理解的第一种方式。

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

谢谢

4

2 回答 2

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

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

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

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

于 2013-01-08T11:32:29.913 回答
0

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

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

如果字符串包含"\\E"序列,它将转义它们

于 2013-01-08T11:50:44.060 回答