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

regex for ${(stringToMatch)}

我正在使用 java 模式匹配器 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)\}