正则表达式匹配特定的字符串

时间:2014-03-12 01:03:54

标签: regex vb.net

我正在尝试使用Regex从<Num>中提取字符串Barcode(_<Num>_).PDF。我在看Regular Expression Language - Quick Reference,但这并不容易。谢谢你的帮助。

    Dim pattern As String = "^Barcode(_+_)\.pdf" 
    If Regex.IsMatch("Barcode(_abc123_).pdf", pattern) Then
        Debug.Print("match")
    End If

3 个答案:

答案 0 :(得分:1)

如果您不仅要尝试匹配而且还要将值读入变量,那么您将需要调用Regex.Match方法而不是简单地调用boolean isMatch方法。 Match方法将返回一个Match对象,该对象将允许您从模式中获取组和捕获。

您的模式需要类似"Barcode\(_(.*)_\)\.pdf" - 请注意内部括号,它将为您创建一个捕获组,以获取下划线之间的字符串值。有关示例,请参阅a MSDN docs几乎就是你在做什么。

答案 1 :(得分:1)

我不知道VB中的正则表达式,但我可以为您提供一个网站来检查正则表达式的正确性:Regex Tester。在这种情况下,如果<Num>是数字,则可以使用“条形码(_ \ d + _)。pdf”

答案 2 :(得分:0)

仅供记录,这就是我最终使用的内容:

    'set up regex
    'I'm using + instead of * in the pattern to ensure that if no value is
    'present the match will fail
    Dim pattern As String = "Barcode\(_(.+)_\)\.pdf"
    Dim r As Regex = New Regex(pattern, RegexOptions.IgnoreCase)

    'get match
    Dim mat As Match
    mat = r.Match("Barcode(_abc123_).pdf")

    'output the matched string
    If mat.Success Then
        Dim g As Group = mat.Groups(1)
        Dim cc As CaptureCollection = g.Captures
        Dim c As Capture = cc(0)
        Debug.Print(c.ToString)
    End If

.NET Framework Regular Expressions