0

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

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

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

2 回答 2

3
line.matches("@@title@@")

表示整行匹配。想象它是这样的

line.matches("^@@title@@$")

如果replaceAll没有匹配,也不会抛出异常,所以你可以简单地放弃你的检查:

String line = "\t<title>@@title@@</title>";
line = line.replaceAll("@@title@@", "Title");
于 2013-07-04T09:01:37.570 回答
1

在 Java 中,String#matches仅在整个字符串与正则表达式匹配时才返回 true 。在你的情况下,你想要这个正则表达式:.*@@title@@.*

我认为String#contains更适合您的情况,因为您并不是真的想要匹配正则表达式而是子字符串。

于 2013-07-04T09:03:37.530 回答