我刚接触Java编程,目前正尝试使用正则表达式匹配。但由于某种原因,正则表达式不会匹配任何东西。 我的代码如下:正则表达式匹配
if(scan.hasNext("append\\s[a-zA-Z0-9]*")){
//do stuff
}
,但如果我输入“追加你好”,它不需额外的匹配。
有人能告诉我为什么吗?
我刚接触Java编程,目前正尝试使用正则表达式匹配。但由于某种原因,正则表达式不会匹配任何东西。 我的代码如下:正则表达式匹配
if(scan.hasNext("append\\s[a-zA-Z0-9]*")){
//do stuff
}
,但如果我输入“追加你好”,它不需额外的匹配。
有人能告诉我为什么吗?
你必须使用matches
例如:
"append hello".matches("append\\s[a-zA-Z0-9]*")
您可以使用:
if (scan.nextLine().matches("append\\s[a-zA-Z0-9]*")) {
System.out.println("Match");
}
这会导致编译错误:无法找到符号,我是否需要导入某些内容? – CharlieTr
我认为你误解了一些东西,检查我的编辑,'scan.hasNext'返回true,所以你不能使用匹配它,你可以使用'scan.nextLine()。matches(“append \\ s [a- zA-Z0-9] *“)'代替@CharlieTr –
的问题是,对于一个Scanner
默认的分隔符(我假设是scan
)是一个空格,所以令牌变成:append
和hello
,并且两者都不符合模式。当我输入append hello
,我得到一个匹配
Scanner scan = new Scanner(System.in);
scan.useDelimiter(System.lineSeparator());
if (scan.hasNext("append\\s[a-zA-Z0-9]*")) {
// ...
}
现在:
您可以将分隔符设置为别的东西,例如一个行分隔符。
请参阅[尝试从Java中的文件读取2个单词](https://stackoverflow.com/questions/25702124/trying-to-read-2-words-from-a-file-in-java)。 –