对于有正则表达式经验的人来说,这可能是一个简单的问题,但我遇到了一些麻烦。我希望匹配如下所示的数据行:
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场比赛,尽管我知道应该至少有一场比赛。任何关于我的模式错误的建议都会很棒!感谢。
答案 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-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}"
尝试做我上面说的话。它应该正常工作。