2012-02-14 2 views
0

У меня есть строка, которая выглядит следующим образом:Использование Матча группы с моим регулярным выражением

<td width="308">Services Needed: <a href="javascript:void(null);" title="weekly - 1 hour">ST</a></td> 

Мне нужно, чтобы быть в состоянии соответствовать его, и вытащить информацию из. Я пытаюсь использовать группы соответствия с регулярным выражением. Belowe - мой код:

Что мне нужно для вытягивания - это значение «ST» в строке. У меня есть группа совпадений с именем val, которая должна иметь возможность вытащить это значение. Однако это регулярное выражение не соответствует моей строке. Может ли кто-нибудь помочь мне в том, что не так с моим регулярным выражением?

+0

Почему у вас есть "" в строке? –

+0

Я точно не уверен. Я новичок в регулярных выражениях. У меня есть тот, который похож на этот, и он работал для другой строки, которую я сопоставляю. Я пытался применить ту же технику к этой строке. – user489041

+0

Двойные кавычки - это то, как «символы кодируются в стенографических литералах в C#.» @ »« »Определяет строковый литерал строки, так же как' '' 'определяет регулярный строковый литерал. См. Http://msdn.microsoft.com /en-us/library/aa691090%28v=vs.71%29.aspx –

ответ

1

Что это значит, что это не соответствует? Я просто вырезать & вставить код в новое консольное приложение и match.Groups["val"] содержит значение "ST":

string line = @"<td width=""308"">Services Needed: <a href=""javascript:void(null);"" title=""weekly - 1 hour"">ST</a></td>"; 
Match match = Regex.Match(line, @"<a href=""(?<scr>[^""]*)"" title=""(?<title>[^""]*)"">(?<val>[^<]*)"); 
string val = match.Groups["val"].Value; 
+0

Скажите, что перед этим строка имеет что-то вроде "\ t \ t \ t \ t \ t". это заставляет его не соответствовать « – user489041

+0

Не стоит этого делать, нет. Это будет иметь значение, если у вас есть разрывы строк внутри тега ''. Попробуйте добавить некоторые 'RegexOptions' к вашему совпадению, возможно,' RegexOptions.SingleLine ' RegexOptions.IgnoreCase' –

2

Если текст гарантированно XML, вы будете иметь более легкое время с помощью инструментов XML, чем с регулярным выражением.

string val = XDocument.Parse(input).Element("td").Element("a").Value; 

В качестве альтернативы вы можете использовать HTML-парсер. Regex был бы моим последним выбором для этого. Независимо от того, насколько простым выглядит HTML или XML, вы всегда будете сталкиваться с причудами, используя регулярное выражение для его анализа.

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