我正在尝试使用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
答案 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