我正在尝试从包含非元字符 - (%, &)
和元字符 - ([, ], {, },|)< 的字符串形成正则表达式模式
.
问题是,我想(如何)识别任何可能是 java Pattern 的元字符的字符并使用 "\\"
对其进行转义,然后我可以将一些非元字符替换为正则表达式元字符 .*
或 .+
例如输入字符串 = "%abc&xy[z,p)"
第一步输出(我需要帮助来识别和转义所有元字符)-“%abc&xy\\[z,p\\)”
第二个 setp 输出(我将在其中进行自定义字符替换(此处不需要帮助))-“.*abc.+\\[z,p\\)”
附: - 我不认为 Pattern.quote()
或 Pattern.Literal
是这里的答案。到目前为止,我看到的唯一选择是拥有这些元字符的映射并根据它检查每个字符。
最佳答案
Java 正则表达式模式可以在这里找到:http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html .
您应该特别注意 \Q
和 \E
,它们是为转义大部分文本而设计的,而不需要专门处理所有内容。
如果我正确理解您的要求,您想要例如有例如将 MYCODE
等标记更改为 .*
,则更改可能是:
- 在开头添加
\Q
- 在末尾添加
\E
- 将
MYCODE
替换为\E.*\Q
我自己没有在Java中测试过这个,但它的原理与perl中相同。
因此,匹配所有 {MYCODE 开括号
变为 \QMatch 所有 {\E.*\Q 开括号\E
。
您可能需要转义 block 内的任何 \
。对此不太确定。
关于Java转义正则表达式元字符和构造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19282167/