2012-03-03 145 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