我剛接觸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)。 –