2013-08-19 122 views
-6

我知道這種問題經常提出,但 我不明白爲什麼這個正則表達式不匹配。 我想檢查一下行的開頭是否有「M」,或者不行。
最後,我想要在行尾的路徑。 這就是爲什麼startsWith()不適合我的需求。Java正則表達式不匹配 - 組

line = "M  72208 70779 aab src\com\aut\testproject\TestDomainf1.java"; 

if (line.matches("^(M?)(.*)$")) {} 

我也嘗試了其他方式:

Pattern p = Pattern.compile("(M?)"); 
Matcher m = datePatt.matcher(line); 
if (m.matches()) { 
    System.out.println("yay!"); 
} 

if (line.matches("(M?)(.*)")) {} 

感謝

+0

在特定情況下,也不會'線.startsWith(「M」)'訣竅? – BackSlash

+0

連續三次投下的問題,這並不經常發生。 –

+0

我已經發布了這個問題,但沒有重要的事實,我需要在行尾的路徑。 所以,如果在開始時有一個M,我想要在該行末尾的路徑。 http://stackoverflow.com/questions/18314450/java-regex-does-not-match?rq=1 – JuergenKie

回答

0

看似簡單:

if (line.startsWith("M")) { 
     String[] tokens = line.split("\\s+"); 
     String path = tokens[tokens.length - 1]; 
    }