0

我对 StackOverflow 很陌生

我有个问题:

Dim sample As String = "<b>test string any value </b> <b>This Continue line here </b>"

Dim ra As New Regex("<b>(.*)</b>")

Dim m As Match = ra.Match(sample)
If m.Success Then
   MsgBox(m.Groups(1).Value)
End If

但我得到了这个输出:

test string any value </b> <b>This Continue line here 
4

1 回答 1

4

通过在其后添加一个问号来使*乘数不贪心,以使表达式匹配尽可能少而不是尽可能多:

Dim ra As New Regex("<b>(.*?)</b>")

当乘数贪心时,.*会将所有内容匹配到字符串的末尾,然后它会回溯直到找到</b>,这将是第二个标签的末尾。使用非贪婪乘数,它将从匹配零个字符开始,然后增加匹配,直到找到</b>,这将是第一个标签的结尾。

于 2013-10-22T16:51:01.480 回答