【发布时间】:2013-12-20 12:48:12
【问题描述】:
我正在寻求创建正则表达式的帮助,以便我可以用锚标记替换文本。文本来自 SQL 字段 (VarChar(max)),格式如下:
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua (1954, c. 12; 1968, c. 300; 1994, c. 98)
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua (1998, cc. 553, 568; 2001, c. 300)
在上面的文字中,我需要将 1994 年之后的所有章节替换为锚标签。因此,例如,98、553、568 和 300 都将被替换。以下代码查找 1994 年的整个文本,例如 c.98,但我不确定如何仅替换该文本中的“98”。
Public Shared Function ReplaceChapterTag1(lang As String) As String
Dim l As String = lang
Dim r As Regex = New Regex("199[4-9][/,][/ ][/c]*[/.][/ ][0-9]+(?:\.[0-9]*)?")
Dim applyEvaluator As MatchEvaluator = New MatchEvaluator(AddressOf applyCodeLink)
l = r.Replace(l, applyEvaluator)
Return l
End Function
Private Shared Function applyCodeLink(ByVal m As Match) As String
Dim r As Regex = New Regex("^[0-9]*[\-][0-9]*")
Dim str As String = m.ToString
Dim strReturn As String = ""
Dim match As Match = r.Match(str)
If match.Success Then
strReturn = str
Else
strReturn = "<a href='link?id=" & m.Value & "'>" & m.Value & "</a>"
End If
Return strReturn
End Function
【问题讨论】: