RegEx 找出文章中符合關鍵字的片段

來源:藍色小舖 (http://www.blueshop.com.tw/board/show.asp?subcde=BRD20080827120329VEH&fumcde=FUM20041006161839LRJ&rplcnt=5)
請問如何搜尋出一篇文章中,是否有某一特定字串,並標註和取出前後文例:

來源:藍色小舖

 請問如何搜尋出一篇文章中,是否有某一特定字串,並標註和取出前後文例:
dim str as string = "宋胡會可望談兩岸政治定位【吳燕玲╱台北報導】連胡會之後國民黨單獨召開記者會,以新聞公報的形式發布五大共識,親民黨中央昨天不願對連胡會發表看法"
當在textbox中輸入"連胡會"後可以找到文中有"連胡會"的字串,給予紅色,並取出前後10個字
結果如下: 【吳燕玲╱台北報導】連胡會之後國民黨單獨召開記親民黨中央昨天不願對連胡會發表看法

 解答過程請看來源。


其中 Jeff 大將整個功能寫成函式 (ASP.NET 魔法學院),實際測試了一下,弄上去會發生 List 型別未定義的錯誤。
這時候加入 Imports System.Collections.Generic 就 ok 了。

 不過呢,為了方便使用,我小小改了一下程式,將 List(of String) 改成使用 String ,這樣不用 Imports System.Collections.Generic 也可以用了

01     ''' <summary>
02     ''' 由字串中尋找關鍵字片段。
03     ''' </summary>
04     ''' <param name="Text">字串。</param>
05     ''' <param name="Keyword">關鍵字。</param>
06     ''' <param name="BLength">包含關鍵字前的字元數。</param>
07     ''' <param name="ALength">包含關鍵字後的字元數。</param>
08     ''' <returns>傳回符合的關鍵字片段的字串集合。</returns>
09     Public Function FindKeywordParts( _
10         ByVal Text As String, _
11         ByVal Keyword As String, _
12         ByVal BLength As Integer, _
13         ByVal ALength As Integer) As String
14
15         Dim sPattern As String
16         Dim oRegEx As Regex
17         Dim oMatchs As MatchCollection
18         Dim oList As New List(Of String)
19
20         '比對規則
21         sPattern = String.Format(".{{0,{1}}}{0}.{{0,{2}}}", Keyword, BLength, ALength)
22         oRegEx = New Regex(sPattern)
23
24         oMatchs = oRegEx.Matches(Text)
25
26         Dim oString As String = ""
27         For Each oMatch As Match In oMatchs
28             oString &= oMatch.Value
29         Next
30         Return oString
31
32     End Function

 Update: 另外補上一個網址,可以找到很多相關的 Regular 規則 http://regexlib.com/