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

标签 java regex

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

问题是,我想(如何)识别任何可能是 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/

相关文章:

java - 使用 Java API 绕过垃圾箱从 HDFS 删除文件

python - pandas 正则表达式提取函数的行为与 "normal"正则表达式提取不同?

c# - 正则表达式 (C#) : match > < & (illegal XML chars) but only when contained within qutoes

regex - 如何在 Ansible 的 lineinfile 模块中的正则表达式中转义 1 个或多个空格?

Python正则表达式获取两个字符串之间的文本

java - 如何从内容类型中获取文件扩展名?

java - 无法应用插件 "com.google.gms.google-services"

java - 尝试在 docker 容器之间进行连接时,连接被拒绝(连接被拒绝)

Java : garbage collection

javascript - 如何在 Javascript 中编写此数字检测正则表达式?