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 - 我的 java public static void main(String []args) 和一个简单的 println 在 android studio 中不起作用

Javascript 正则表达式 : match any character that is not in the set of symbols (but only if this symbol doesn't follow a backslash)

regex - 如何在 bash 正则表达式中匹配 "something or nothing"?

ruby-on-rails - 如何修复正则表达式中的无效多字节字符?

javascript - 如何检测字符串是否使用 escape() 或 encodeURIComponent() 编码

git - 转义 git 提交消息中的注释字符 (#)

java - 当主要 Activity 继承 ListActivity 类时,应用程序不起作用

java - 如何在文本文件中的两行之间写入文本。 java

java - 进行 cordova 平台更新后,Android 目标发生更改

javascript - javascript和html中xss编码的区别