VB.Net Regex ...提取一个值

时间:2011-06-21 20:49:36

标签: regex vb.net

如何在VB.Net中使用RegularExpressions类从字符串中提取值?例如,假设我有字符串:

[Mon Jan 4 2011] Blah Blah2 Other text

我希望将“2011年1月4日星期一”部分返回给变量。我以为你会使用“Regex.Replace”方法,但我似乎无法弄清楚如何提取我想要的字符串部分。

5 个答案:

答案 0 :(得分:4)

在这种情况下,我认为您不需要替换文本,而是需要匹配文本。

Regex.Match(input, "(?<=\[)[^\]]+").Value

这会在第一个[之后直到下一个]收到所有文字。 编辑:错过方括号。

答案 1 :(得分:2)

您可以使用匹配组 - 专门命名所需表达式的一部分,并按名称引用它:

Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim pattern As String = "\[(?<datestring>[^\]]+)\]"
      Dim input As String = "[Mon Jan 4 2011] Blah Blah2 Other text"
      Dim match As Match = Regex.Match(input, pattern)

      ' Get the first named group.
      Dim group1 As Group = match.Groups.Item("datestring")
      Console.WriteLine("Group 'datestring' value: {0}", If(group1.Success, group1.Value, "Empty"))
   End Sub
End Module

答案 2 :(得分:0)

尝试使用正则表达式:

\x5B([^\x5D]+)

答案 3 :(得分:0)

您也可以使用此代码来实现目标:

    Dim str As String = "[Mon Jan 4 2011] Blah Blah2 Other text"
    Dim m As Match = Regex.Match(str, "\[(?<tag>[^]]*)")
    If (m.Success) Then
        Debug.Print(m.Result("${tag}"))   ' Check "Output Window"
    End If

在此代码中,匹配的结果将存储在命名组tag中,并将相应地使用。

答案 4 :(得分:0)