在我的 Java 应用程序中,我有一个“模板字符串”,例如“此记录的名称是:%%%NAME%%%。”
我想循环遍历一个列表,并为每次迭代打印出此模板的“自定义版本”,该模板将 %%%NAME%%%
标记字符串替换为有意义的值。例如:
List<String> strNamesList = getNamesSomehow();
String strTemplate = "This record's name is : %%%NAME%%%.";
String strCustomized = "";
for(int i = 0; i < strNamesList.size(); i++)
{
strCustomized = strTemplate.replaceFirst(strSomeRegex, strNamesList.get(i));
System.out.println(strCustomized);
}
与往常一样,我被 strSomeRegex
噎住了。我只需要一个与确切短语匹配的正则表达式:
%%%NAME%%%
我搜索过 Google、Binged、维基百科等等。搜索“精确匹配正则表达式”(及其类似内容)会返回各种结果,但这些都不能帮助我处理包含标点符号(百分号)的标记。
正则表达式只是每次都让我困扰的事情之一,这是我最后的手段。
感谢任何好心的 StackOverflowers 可以为我指明正确的方向!
最佳答案
java 有一个函数可以引用正则表达式中的字符串 java.util.regex.Pattern.quote(string)
它的作用是用 \Q
和 \E
包围字符串(将 \E
替换为 \E\\E根据需要在字符串中添加\Q
)
在您的示例中“\\Q%%%NAME%%%\\E”
即可
关于Java 正则表达式与精确标记有关的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7110456/