【问题标题】:Java escaping regex meta characters and constrctJava转义正则表达式元字符和构造
【发布时间】:2013-10-17 09:51:00
【问题描述】:

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

问题是,我想(如何)识别任何可能是 Java 模式元字符的字符并使用 "\\" 对其进行转义,然后我可以用正则表达式元字符 .* 或 @ 替换一些非元字符987654325@ 例如输入字符串 = "%abc&xy[z,p)" 第一步输出(我需要帮助来识别和转义所有元字符)-“%abc&xy\\[z,p\\)” 第二个 setp 输出(我将在其中进行自定义字符替换(此处无需帮助))-“.*abc.+\\[z,p\\)”

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

【问题讨论】:

  • 你能给我们一个未转义和转义字符串的例子吗?
  • 我理解示例请求,但不明白为什么问题不明显。无论如何,感谢 Dirk 的建议。这可能行得通!
  • @axiopisty 如果您认为问题还不够清楚,请告诉我,否则请撤消您的操作。

标签: java regex


【解决方案1】:

可以在此处找到 Java 正则表达式模式: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

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

【讨论】:

    猜你喜欢
    • 2020-07-24
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 2020-02-05
    • 2010-12-22
    相关资源
    最近更新 更多