2012-03-03 52 views
0

Friends, 我想匹配一個字符串,如 「int lnum [];」所以我試圖用這樣的模式匹配它C#正則表達式match,match.Success即使在遵循規則後也返回false

[A-Za-z_0-9] [A-Za-z_0-9]\[\] 

但它似乎並沒有工作。 我擡頭規則在http://www.mikesdotnetting.com/Article/46/CSharp-Regular-Expressions-Cheat-Sheet

string pJavaLine = "int lnum[]"; 
match = Regex.Match(pJavaLine, @"[A-Za-z_0-9] [A-Za-z_0-9]\[\] ", RegexOptions.IgnoreCase); 
      if (match.Success) { 
       // Finally, we get the Group value and display it. 
       string key = match.Groups[1].Value; 
       Console.WriteLine(key); 
      } 

的match.Success返回false。 有人請讓我知道一個可能的方式來得到這個。

+0

嗨,拉斯,我接受了他們中的大多數人。如果這些建議沒有用,請告訴我該怎麼辦。 – 2012-03-04 09:31:19

+0

太棒了!別擔心 - 如果這些建議沒有用,那麼至少要留言給海報;他們可能會有更好的建議,至少可以幫助未來瀏覽網站的人。 – 2012-03-04 23:52:28

回答

4

你的每個角色分類,如[A-Za-z_0-9],只匹配一個字符。如果你想匹配多個字符,你需要添加一些東西到最後。例如,[A-Za-z_0-9]+ - +表示其中一個或多個。您也可以使用* 0或更多,或者指定一個範圍,如2至5個字符的{2,5}

這就是說,你可以用這個模式來該字符串匹配:

[A-Za-z_0-9]+ [A-Za-z_0-9]+\[\] 

\w鬆散相當於[A-Za-z_0-9](見下文jessehouwing的評論鏈接),那麼你也許可以簡單地使用:

\w+ \w+\[\] 

檢查here for more info on the standard Character Classes

+0

它只是工作:)非常感謝Jay! – 2012-03-03 03:39:31

+0

當我試圖用「\ w + \\(w + \ w + \ [\] + \\)」解析「fun(int lnum [])」時,它不會返回true。請你讓我知道。看起來我遵循了所有規則。 – 2012-03-03 03:54:25

+0

@SaurabhGhorpade您在第二個'w'之前以及每個方括號''['和']'之前缺少反斜槓。有一些偉大的正則表達式工具可以幫助你正確地獲得這些工具。 Regex Buddy就是其中之一。還有在線正則表達式測試人員,例如http://regexlib.com/RETester.aspx – Jay 2012-03-03 05:13:06