我在文件中保存了一些html代码。我想替换所有符合此模式的文本:@@[\w]{1,}@@
。但为什么我的java代码中的这种模式不起作用?我的模式错了吗?
String line = "\t<title>@@title@@</title>";
if(line.matches("@@title@@")) {
line = line.replaceAll("@@title@@", "Title");
}
答案 0 :(得分:3)
line.matches("@@title@@")
表示整行匹配。想象一下这个
line.matches("^@@title@@$")
如果没有匹配,replaceAll
将不会抛出异常,因此您只需放弃支票即可:
String line = "\t<title>@@title@@</title>";
line = line.replaceAll("@@title@@", "Title");
答案 1 :(得分:1)
在Java中,String#matches仅在整个字符串与正则表达式匹配时才返回true。在您的情况下,您需要此正则表达式:.*@@title@@.*
。
我认为String#contains对你的情况更好,因为你真的不想匹配一个正则表达式而是一个子字符串。