我刚接触Java编码,目前正在尝试使用正则表达式模式匹配。但出于某种原因,正则表达式根本不匹配任何东西。 我的代码如下:
if(scan.hasNext("append\\s[a-zA-Z0-9]*")){
//do stuff
}
但是如果我输入“append hello”,它就不会匹配。
有人可以告诉我原因吗?
答案 0 :(得分:3)
您必须使用matches
例如:
"append hello".matches("append\\s[a-zA-Z0-9]*")
您可以使用:
if (scan.nextLine().matches("append\\s[a-zA-Z0-9]*")) {
System.out.println("Match");
}
答案 1 :(得分:0)
问题是Scanner
(我假设为scan
)的默认分隔符是一个空格,因此令牌变为:append
和hello
,以及既不匹配模式。
您可以将分隔符设置为其他内容,例如行分隔符:
Scanner scan = new Scanner(System.in);
scan.useDelimiter(System.lineSeparator());
if (scan.hasNext("append\\s[a-zA-Z0-9]*")) {
// ...
}
现在当我输入append hello
时,我确实得到了匹配。