我正在为类似Java的语言编写编译器,并且需要匹配样式// Comment.
的单行注释的出现位置。
我的尝试:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MatchOneLineComment {
public static void main(String[] args) {
Matcher matcher = Pattern.compile("//(.*)").matcher("//abc");
System.out.println(matcher.group()); // should print "//abc"... right?
}
}
但是我收到以下错误:
Exception in thread "main" java.lang.IllegalStateException: No match found
at java.util.regex.Matcher.group(Matcher.java:485)
at java.util.regex.Matcher.group(Matcher.java:445)
at MatchOneLineComment.main(MatchOneLineComment.java:7)
非常感谢任何帮助。
答案 0 :(得分:2)
别忘了拨打Matcher#find()
matcher.find();
并在致电group()
之前检查结果。
来自javadoc
尝试查找输入序列的下一个子序列 匹配模式。
此方法从此匹配器区域的开头开始,或者,如果是 以前的方法调用是成功的,匹配器有 从没有重置,在第一个字符不匹配 上一场比赛。
如果匹配成功,则可以通过获取更多信息 开始,结束和分组方法。