2017-05-26 309 views
1

我刚接触Java编程,目前正尝试使用正则表达式匹配。但由于某种原因,正则表达式不会匹配任何东西。 我的代码如下:正则表达式匹配

if(scan.hasNext("append\\s[a-zA-Z0-9]*")){ 
    //do stuff 
} 

,但如果我输入“追加你好”,它不需额外的匹配。

有人能告诉我为什么吗?

+0

请参阅[尝试从Java中的文件读取2个单词](https://stackoverflow.com/questions/25702124/trying-to-read-2-words-from-a-file-in-java)。 –

回答

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

这会导致编译错误:无法找到符号,我是否需要导入某些内容? – CharlieTr

+0

我认为你误解了一些东西,检查我的编辑,'scan.hasNext'返回true,所以你不能使用匹配它,你可以使用'scan.nextLine()。matches(“append \\ s [a- zA-Z0-9] *“)'代替@CharlieTr –

0

的问题是,对于一个Scanner默认的分隔符(我假设是scan)是一个空格,所以令牌变成:appendhello,并且两者都不符合模式。当我输入append hello,我得到一个匹配

Scanner scan = new Scanner(System.in); 
scan.useDelimiter(System.lineSeparator()); 

if (scan.hasNext("append\\s[a-zA-Z0-9]*")) { 
    // ... 
} 

现在:

您可以将分隔符设置为别的东西,例如一个行分隔符。