正则表达式模式不匹配

时间:2013-07-04 08:58:25

标签: java regex

我在文件中保存了一些html代码。我想替换所有符合此模式的文本:@@[\w]{1,}@@。但为什么我的java代码中的这种模式不起作用?我的模式错了吗?

String line = "\t<title>@@title@@</title>";

if(line.matches("@@title@@")) {
    line = line.replaceAll("@@title@@", "Title");
}

2 个答案:

答案 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对你的情况更好,因为你真的不想匹配一个正则表达式而是一个子字符串。