2009-11-21 6 views
0

Je suis en train d'analyser du texte (certes HTML, mais c'est petit, et RegEx (devrait) faire le travail correctement). J'essaie d'utiliser certaines captures, mais elles ne font tout simplement pas ce que je pense qu'elles devraient faire.Pourquoi mes captures ne fonctionnent pas dans .NET regex?

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

À mon avis, c devrait contenir 4 entrées; la substance dans chaque ensemble de supports. Mais ce n'est pas le cas. Indépendamment du fait que j'inclue des crochets, ou tous, ou seulement le premier, mon CaptureCollection contient juste la chaîne originale.

Il me manque quelque chose à propos de CaptureCollection? Ou suis-je pas capturer correctement dans l'expression rationnelle?

Merci pour la solution (je voterais jusqu'à si je pouvais)

+0

Je ne sais pas comment voter, mais vous pouvez * accepter * la solution - et je devrais (en supposant que vous soyez la réponse de Mark Byers). –

+1

Ah, c'est ce que fait la tique. – Squidly

+0

Pourquoi ne pas utiliser le Html Agility Pack et éliminer tous les problèmes de regex? http://www.codeplex.com/htmlagilitypack – TrueWill

Répondre

2

Vous voulez m.Groups, pas m.Captures.

En savoir plus sur les captures sur MSDN.

0

avez-vous d'échapper à votre/avec un \, comme /? Je ne suis pas sûr, c'est quelque chose que j'essaierais.

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