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