2013-11-08 1 views
1

Это, вероятно, простой вопрос для кого-то, у кого возникли проблемы с регулярным выражением, но у меня небольшие проблемы. Я ищу, чтобы соответствовать линии данных, как это показано ниже:Regex для сопоставления данных с веб-страницы

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

Вы можете подтвердить линейный перерыв, который определенно соответствует. Меня не удивило бы, если этот vbCrLf не работает. Try \ r \ n – OGHaza

+0

Возможно, вы сможете выполнить замену на оскорбительных символах перед тем, как применить регулярное выражение, а затем не придется беспокоиться о них вообще. –

+0

@OGHaza В VB.NET 'vbCrLf' - это константа, равная' '\ r \ n" '. –

ответ

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

Попробуйте сделать то, что я сказал выше. Он должен работать правильно.

+1

Спасибо. Я бы сам это исправил, выполнив почти то, что вы сказали! – FraserOfSmeg

Смежные вопросы