1

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

SomeAlpha 文本 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 场比赛。任何关于我的模式错误的建议都会很棒!谢谢。

4

1 回答 1

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}"

有不少问题:

  • *in"[.*]{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}"

试着做我上面说的。它应该可以正常工作。

于 2013-12-01T13:57:27.770 回答