我有一个包含"(*"
和"*)"
的文件。我想删除这两个char序列之间的所有内容。
我使用了以下代码,但它没有对我的字符串做任何事情。
String regex = "\\(\\*.*\\*\\)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
matcher.replaceAll("");
'输入'是:
(* This program prints out a message. *)
program is
begin
write ("Hello, world!");
end;
答案 0 :(得分:2)
您需要捕获匹配器的返回值 - 它的replaceAll
方法返回替换的String。
此外,使用正则表达式匹配您想要匹配的内容,这次是带括号的String。如果您没有一些奇怪的输入,它可能如下所示:
String regex = "\\(\\*.*\\*\\)";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
String result = matcher.replaceAll("(\\*\\*)");
System.out.println(result);
这个regexp实际上捕获了从第一个评论开始到最后一个评论结束的整个区域,这通常不是你想要的。为了让它与非贪婪(不情愿)相匹配,请使用此正则表达式:\(\*.*?\*\)
(在Java中使用加倍的反斜杠。)