2009-11-21 2 views
0

Я разбираю текст (по общему признанию, HTML, но это небольшой материал, и RegEx (должен) отлично справляется с работой). Я пытаюсь использовать некоторые захваты, но они просто не делают то, что я думаю, что им нужно.Почему мои записи не работают в .NET regex?

Match m = new Regex("(.*?)<br>(.*?)/(.*?)/(.*)", 
    RegexOptions.None).Match("word<br>stuff1/stuff2/stuff3") 
CaptureCollection c = m.Captures; 

На мой взгляд, c должен содержать 4 записи; материал в каждом наборе скобок. Но это не так. Независимо от того, включаю ли я какие-либо скобки или все из них, или только первый, мой CaptureCollection просто содержит исходную строку.

У меня отсутствует что-то о CaptureCollection? Или я не правильно фиксирую в регулярном выражении?

Спасибо за решение (я бы голосовать, если бы мог)

+0

Я не знаю о голосовании, но вы можете * принять * решение - и должен (предположим, что вы ответ Марк Байерс). –

+1

Ах, вот что делает галочка. – Squidly

+0

Почему бы не использовать Html Agility Pack и устранить все проблемы с регулярным выражением? http://www.codeplex.com/htmlagilitypack – TrueWill

ответ

2

Вы хотите m.Groups, а не m.Captures.

Подробнее о съемках на MSDN.

0

вы должны сбежать от/с \, как /? Я не уверен, это то, что я попробую.

Match m = new Regex("(.*?)<br>(.*?)\/(.*?)\/(.*)", 
    RegexOptions.None).Match("word<br>stuff1/stuff2/stuff3") 
CaptureCollection c = m.Captures; 
Смежные вопросы