java - ${(stringToMatch)} 的正则表达式

标签 java regex escaping special-characters

我正在使用 java Pattern Matcher api 来搜索和替换字符串中的标记。我的字符串如下所示

Org Name: ${org_name}, Agent(s): ${agents}, OrgID: ${org_id}, ...

这里 ${string} 是我需要替换的模式。我使用如下正则表达式

${(org_name|agents|org_id)}

但是 Pattern.compile 抛出异常。如何转义此正则表达式中的特殊字符?还是有更好的方法来为这种情况编写正则表达式?

最佳答案

您需要转义大括号({}),在正则表达式模式中,这意味着量词;以及 $ 符号,表示行尾。只需使用反斜杠:\:

\$\{(org_name|agents|org_id)\}

如果它没有被解析为文字模式,而是被解析为字符串,您将需要使用 \\:

\\$\\{(org_name|agents|org_id)\\}

尝试:

\\$\\{(org_(id|name)|agents)\\}

关于java - ${(stringToMatch)} 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38046949/

相关文章:

java - 我如何在部署在heroku中的java应用程序中添加新的遗迹插件

javascript - 将特定 '.' 符号替换为 '_' 的正则表达式

regex - 检查字符串是否按顺序包含嵌入字符串

c# - 如何将变量插入带有多个引号和转义字符的长字符串中?

xml - 我需要在 XML 文档中转义哪些字符?

java - 简单的多边形内点测试,边缘行为一致

java - 您能否在不同的 OSGi 包中包含 JSF 自定义组件?

java - SCJP 还是 SCJP plus?

( 后的正则表达式匹配数

php - 关于查找文本的 mysQL 查询帮助