0

我正在尝试从包含非元字符 -(%, &)和元字符 -的字符串中形成正则表达式模式([, ], {, },|)

问题是,我想(如何)识别任何可能是 java Pattern 元字符的字符并使用它进行转义"\\",然后我可以用正则表达式元字符替换一些非元字符.*.+ 例如输入字符串 = "%abc&xy[z, p)" 第一步输出(我需要帮助来识别和转义所有元字符) - "%abc&xy\\[z,p\\)" 第二步输出(我将在其中进行自定义字符替换(这里不需要帮助) ) - ".*abc.+\\[z,p\\)"

ps - 我不认为Pattern.quote()Pattern.Literal在这里回答。到目前为止,我看到的唯一选择是拥有这些元字符的映射并检查每个字符。

4

1 回答 1

2

Java regexp 模式可以在这里找到:http: //docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

你应该特别看一下\Qand \E,它是为转义大部分文本而设计的,而无需专门处理所有文本。

如果我正确理解您的请求,您希望例如有一个标记,例如MYCODE更改为.*,那么更改可能是:

  • \Q在开头添加
  • \E在最后添加
  • 替换MYCODE\E.*\Q

自己没有在Java中测试过,但是和perl中的原理是一样的。

就这样Match all the {MYCODE open brackets变成了\QMatch all the {\E.*\Q open brackets\E

您可能需要转义\块内的任何内容。不确定这一点。

于 2013-10-09T20:47:53.640 回答