Java转义正则表达式元字符和构造

时间:2013-10-09 20:37:23

标签: java regex

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

问题是,我想(如何)识别任何可能是java模式元字符的字符并使用"\\"将其转义然后我可以用正则表达式元字符替换一些非元字符{{1 }或.* 例如输入字符串=“%abc& xy [z,p)” 第一步输出(我需要帮助识别和转义所有元字符) - “%abc& xy \\ [z,p \\)” 第二个setp输出(我会做自定义字符替换(这里不需要帮助)) - “。* abc。+ \\ [z,p \\)”

P.S。 - 我认为.+Pattern.quote()不是这里的答案。截至目前,我看到的唯一选择是拥有这些元字符的地图并检查每个字符。

1 个答案:

答案 0 :(得分:1)

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

您应该特别关注\Q\E,它们专门用于转发大部分文本,而无需专门处理所有文本。

如果我理解您的请求,您需要,例如有例如像MYCODE这样的标记要更改为.*,然后更改可能是:

  • 在开头添加\Q
  • 在末尾添加\E
  • MYCODE替换为\E.*\Q

我自己没有用Java测试,但它与perl中的原理相同。

因此Match all the {MYCODE open brackets变为\QMatch all the {\E.*\Q open brackets\E

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