2013-01-16 137 views
2

這一個很簡單,但似乎在困擾着我。用java中的空格匹配單詞正則表達式

我有以下文本行:

for  months to 

我想用下面的正則表達式匹配它:

for\s*months\s*to 

我讀這正則表達式爲:

  1. 必須有單詞「for」
  2. 後面跟着任意數量的空間
  3. 其次是「月」字
  4. 後面緊跟着這個詞的空間
  5. 任何量「到」

而對於我來說,這應該匹配,但它不。任何人都可以看到我可能出錯的地方。

+0

你可能有多餘的空格(和複製你的代碼有多餘的空格「到」後)。這是一個應該幫助你的鏈接。 http://fiddle.re/26pu – Scott

回答

1

你很可能有先後的空白。使用String.matches(String regex)您必須匹配整個字符串。

嘗試"\\s*for\\s+months\\s+to\\s*"

+0

我將它改爲:'\ s * for \ s * months \ s * to'以允許任何空格開頭,但它仍然不匹配 – user489041

+0

這是因爲您有在上面的例子中,最後一個空白符號。 – crush

3

這是因爲後面的空格中。

試試這個:

Pattern p = Pattern.compile("for\\s*months\\s*to\\s*"); 
    Matcher m = p.matcher("for  months to "); 
    System.out.println(m.matches()); 
+0

您的回答後我從OP問題中選擇了「以下文本行」,並且選擇顯示了尾部的空格。接得好! :) – andr

相關問題