正则表达式匹配来自网页的数据

时间:2013-11-08 15:25:39

标签: regex vb.net webbrowser-control

对于有正则表达式经验的人来说,这可能是一个简单的问题,但我遇到了一些麻烦。我希望匹配如下所示的数据行:

  

SomeAlpha Text CrLf CrLf 15 CrLf CrLf 123 132 143 CrLf CrLf 12313 CrLf CrLf 12/123

"SomeAlpha Text"只是一些带空格和潜在标点符号的文本。第一个数字介于1到30,000之间。第二组数字(123 132 143)介于1和500,000之间(每个数字)。下一个数字介于1到500,000之间。最终设定为(1-30,000)/(1-30,000)。这是我到目前为止编写的代码:

Dim Pattern As String = "[.*]{1,100}" & vbCrLf & "" & vbCrLf & "[0-9]{1,4}" & vbCrLf & "" & vbCrLf & "[0-9]{1,6] [0-9]{1,6] [0-9]{1,6]" & vbCrLf & "" & vbCrLf & "[0-9]{1,6}" & vbCrLf & "" & vbCrLf & "[0-9]{1,5}/[0-9]{1,5}"

For Each match As Match In Regex.Matches(WebBrowser1.DocumentText.ToString, Pattern, RegexOptions.IgnoreCase)

        RichTextBox1.AppendText(match.ToString & Chr(13) & Chr(13))

Next

我目前正在获得0场比赛,尽管我知道应该至少有一场比赛。任何关于我的模式错误的建议都会很棒!感谢。

1 个答案:

答案 0 :(得分:0)

"[.*]{1,100}" & vbCrLf & "" & vbCrLf & "[0-9]{1,4}" & vbCrLf & "" & vbCrLf & "[0-9]{1,6] [0-9]{1,6] [0-9]{1,6]" & vbCrLf & "" & vbCrLf & "[0-9]{1,6}" & vbCrLf & "" & vbCrLf & "[0-9]{1,5}/[0-9]{1,5}"

有很多问题:

  • *中的"[.*]{1,100}"告诉前一个字符尽可能多次重复,因此不必要。将其替换为".{1,100}"".*"
  • 您说第一个数字介于0和30000之间。"[0-9]{1,4}"仅允许4位数(0到9999)。将其替换为"[0-9]{1,5}",允许0到99999之间的任何数字。
  • 您不小心将]而非}放在此部分的三个位置:"[0-9]{1,6] [0-9]{1,6] [0-9]{1,6]"。将其替换为"[0-9]{1,6} [0-9]{1,6} [0-9]{1,6}"

尝试做我上面说的话。它应该正常工作。