0
我嘗試了java的正則表達式量詞java的正則表達式不願意量詞給貪婪的量詞
Pattern p = Pattern.compile("^s(.*?)n$");
Matcher m = p.matcher("sensation");
if(m.matches()){
System.out.println("dude how is this even possible");
System.out.print(m.group() + m.start()+m.end()+"\n");
}else {
System.out.println("sorry dude someting wrong");
}
,因爲它是relecutant量詞它應該給出的結果 仙 sation
而是即時得到的感覺在那裏它出錯了還是我錯過了什麼
感謝從比賽改變後發現我得到了部分答案,即森。我沒有得到第二個結果的原因是什麼 – javaworld
你輸出'm.group()',它輸出你匹配的部分,即'sen'。您沒有輸出其他任何會輸出輸入字符串的不同部分的內容。你的原代碼輸出'm.start()'和'm.end()',它們是'int's。你在輸出中看到了那些嗎?無論如何,如果's'是輸入字符串,則匹配後的字符串部分將是's.substring(m.end())'。這將返回輸入字符串的部分,從匹配後的字符開始,一直到輸入字符串的末尾。 – ajb
@javaworld:正則表達式引擎只能找到不重疊的匹配項。可以解決這個問題,並找到從不同位置開始的重疊匹配(通過使用預見),但無法找到從相同位置開始的重疊匹配。 – nhahtdh