2011-04-02 48 views
0

我想解析一行以"My Password: "開頭的行。問題是這兩個詞在它們之間有空格,冒號後有一個空格(My<space>Password:<space>Text<end of line>)正則表達式解析以「我的密碼:」開頭的單行到行尾

我無法將2個單詞與冒號一起解析到行尾。正則表達式在Java中。任何幫助將不勝感激。

編輯:

我嘗試正則表達式作爲字符串myRgex = "My Password:+(/S)*$" ...

這是確保我沒有任何空格在密碼和*$是確保我這樣做直到行結束。感謝您的快速回復。我仍然在努力。任何人都可以幫助我解析它,直到行結束時忽略任何空格並盯着上述單詞。糾正我的正則表達式,如果你發現它是錯誤的。

+1

你可以請發佈你嘗試過的正則表達式嗎?另外,你是否想要檢索密碼和文本? – 2011-04-02 20:10:57

回答

2
Pattern regex = Pattern.compile("^My Password: (\\S*)$"); 
Matcher regexMatcher = regex.matcher(subjectString); 
if (regexMatcher.find()) { 
    ResultString = regexMatcher.group(1); 
} 

應該這樣做。

^    # Anchor the search at the start of the string 
My Password: # Literal "My Password: " 
(\\S*)   # Any number of non-space characters 
$    # Anchor the search at the end of string 

你的正則表達式有幾個錯誤:非空格字符縮寫爲\S,不/S。而在你的正則表達式中,*適用於冒號:My Password:*的意思是「我的密碼」,後跟零個或多個冒號。

0

我不確定我是否理解,您想檢查以「我的密碼:」開頭並且在「我的」和「密碼」之間以及冒號後面有一個空格的行嗎?

如果是這樣試試這個:/^My Password: .*/
由於空格字符和冒號不保留字符,如點或星號(*),你可以只是使用它們。

如果您正在尋找不區分大小寫的(即我的pasSworD),請在末尾使用case標誌:/^my password: .*/i

.是任何單個字符
*意味着零次或多次

編輯:
你可以把.*之間的支架,如果你需要得到比賽和不僅在正則表達式的布爾評價感興趣: /^My Password: (.*)/