Problema con RegularExpression.Regex

di il
4 risposte

Problema con RegularExpression.Regex

Ciao a tutti,
ho due problemi con RegEx (RegularExpression)

1) Ho questo testo:
<ol class="big_list">
	<li class="miaClasse strana tonda" id="t1">
		testo 1
	</li>
	<li class="tuaClasse normale ovale" id="t2">
		testo 2
	</li>
	<li class="suaClasse speciale quadrata" id="t3">
		testo 2
	</li>
</ol>
e devo estrarre la classe e il testo di "t2", per cui devo ricavarmi "tuaClasse normale ovale" e "testo 2"

Ho provato usando il pattern
<li class="(.*?)" id="t2">(.*?)<\/li>
ma non funziona, perchè mi ritorna anche parte dell'oggetto "t1"
Qualcuno sa come poter fare ??
P.S: per provare sto usando il sito

2) una volta che ho trovato il testo che mi interessa (utilizzando RegularExpression.RegEx.Match) come posso sapere l'offset del testo trovato in riferimento al testo completo ?? Attualmente utilizzo un IndexOf, ma mi sembra di fare un lavoro doppio dato che il Match, visto che ha trovato il testo, dovrebbe dirmi anche dove l'ha trovato.

Grazie mille
Sergio

4 Risposte

  • Re: Problema con RegularExpression.Regex

    SirJo ha scritto:


    1) Ho questo testo:
    <ol class="big_list">
    	<li class="miaClasse strana tonda" id="t1">
    		testo 1
    	</li>
    	<li class="tuaClasse normale ovale" id="t2">
    		testo 2
    	</li>
    	<li class="suaClasse speciale quadrata" id="t3">
    		testo 2
    	</li>
    </ol>
    e devo estrarre la classe e il testo di "t2", per cui devo ricavarmi "tuaClasse normale ovale" e "testo 2"
    ...
    Ciao,
    non puoi usare LinqToXml o Xpath ... tipo così;
    se ti serve puoi anche modificare senza sapere l'offset
    
    XElement root = XElement.Load(@"C:\temp\SirJo.xml");
                IEnumerable<XElement> li =
                    from el in root.Elements("li")
                    where (string)el.Attribute("id") == "t2"
                    select el;
                foreach (XElement el in li)
                    Console.WriteLine(el.Attribute("class").Value + " " + el.Value );
    
    HTH
  • Re: Problema con RegularExpression.Regex

    Grazie della risposta, ma se possibile vorrei risolvere con le RegularExpression, primo perchè il progetto è ancora con .NET 2.0 e poi perchè lo devo portare anche su altri linguaggi dove non ho il Linq

    P.S.: il codice fa parte di una pagina HTML molto complessa, non di una XML
  • Re: Problema con RegularExpression.Regex

    Se sei sicuro che la struttura resti questa potresti provare a caricare le righe in un array di stringhe e poi sulla base di quello che trovi scorrendole esegui le tue operazioni
  • Re: Problema con RegularExpression.Regex

    RISOLTO !!

    Ecco il pattern corretto:
    <li class="([^"]*?)" id="t2">(.*?)<\/li>
    Praticamente gli ho detto che nel nome della classe può esserci qualsiasi carattere ma non le virgolette, grazie comunque a tutti per l'interessamento
Devi accedere o registrarti per scrivere nel forum
4 risposte