2017-05-26 360 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]*")) { 
    // ... 
} 

現在:

您可以將分隔符設置爲別的東西,例如一個行分隔符。