使用 (?<GroupName>Regular Expression) 將符合 Regular Expression 的字串放進群組, 並以 GroupName 做索引值來取用.
以下範例來自於 [藍色小鋪]
範例1:
將 [QryGuideIDList:0001+2=g1+n1+g2+n2+g3+n3] 拆成
PGID: 0001
ListSize: 2
GuideID: g1,g2,g3
GuideName: n1,n2,n3
程式碼:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | //先將PGID與ListSize取出, g1+n1+g2+n2+g3+n3放至Guide中. Regex pattern1 = new Regex( @"^\[QryGuideIDList:(?<PGID>.*)\+(?<ListSize>.*)\=(?<Guide>.*)\]$" , RegexOptions.IgnoreCase); Match match = pattern1.Match( "[QryGuideIDList:0001+2=g1+n1+g2+n2+g3+n3]" ); Console.WriteLine(match.Groups[ "PGID" ].Value); Console.WriteLine(match.Groups[ "ListSize" ].Value); Console.WriteLine(match.Groups[ "Guide" ].Value); //再將Guide值套用另一個pattern, 用g+n的方式將值分配給GuideID與GuideName Regex pattern2 = new Regex( @"(?<GuideID>g\d+)\+(?<GuideName>n\d+)" , RegexOptions.IgnoreCase); MatchCollection matchGuides = pattern2.Matches(match.Groups[ "Guide" ].Value); foreach (Match guide in matchGuides) { Console.WriteLine( "GuideID={0}, GuideName={1}" , guide.Groups[ "GuideID" ].Value, guide.Groups[ "GuideName" ].Value); } |
取出關鍵字前後各 10 個字(最多):
1 2 3 4 5 6 7 8 | string s = "宋胡會可望談兩岸政治定位【吳燕玲╱台北報導】連胡會之後國民黨單獨召開記者會," + "以新聞公報的形式發布五大共識,親民黨中央昨天不願對連胡會發表看法" ; Regex pattern2 = new Regex( @"(?.{0,10}連胡會.{0,10})" , RegexOptions.IgnoreCase); MatchCollection matchGuides = pattern2.Matches(s); foreach (Match guide in matchGuides) { Console.WriteLine( "KeyWord={0}" , guide.Groups[ "KeyWord" ].Value); } |
沒有留言:
張貼留言