-----------------------------------

Acquista i software ArcGIS tramite Studio A&T srl, rivenditore autorizzato dei prodotti Esri.

I migliori software GIS, il miglior supporto tecnico!

I migliori software GIS, il miglior supporto tecnico!
Azienda operante nel settore GIS dal 2001, specializzata nell’utilizzo della tecnologia ArcGIS e aderente ai programmi Esri Italia Business Network ed Esri Partner Network

-----------------------------------



sabato 7 febbraio 2009

Regular Expression

Le regular expression permettono di ricercare, tramite 'pattern' più o meno complessi, porzioni stringhe in un testo.
In c# la classe che si occupa di questo è System.Text.RegularExpressions.Regex.
Creiamo una semplice form con una textbox ed un button per testare la regular expression.


Creo la regular expression con questa utility http://www.regexbuddy.com/. Ce ne sono anche di gratuite (ad esempio http://www.ultrapico.com/Expresso.htm).


Ad esempio vogliamo estrarre tutte le parole racchiuse tra parentesi quadre.



Invece di creare codice utilizzando ad esempio i classici substring, indexof ecc. abbiamo lo stesso risultato con poche righe di codice.



In un testo ad esempio vogliamo che non ci siano due parole uguali ripetute:


try
            {


                Regex regexObj = new Regex(@"\b(\w+)\s+\1\b");
                Match matchResults = regexObj.Match(subjectString);


                while (matchResults.Success)
                {
                    // matched text: matchResults.Value
                    // match start: matchResults.Index
                    // match length: matchResults.Length
                    matchResults = matchResults.NextMatch();
                }
            }

            catch(ArgumentException ex)
            {
                // Syntax error in the regular expression
            }


Testo: 'This word is a repeated repeated word. A pluto pluto'
troveremo: repeated repeatedpluto pluto

Se è un intero ancorato:

try {

                    Regex regexObj = new Regex(@"^\d+$");

                    Match matchResults = regexObj.Match(subjectString);

                    while (matchResults.Success) {

                        // matched text: match Results.Value
                        // match start: matchResults.Index
                        // match length: matchResults.Length
                        matchResults = matchResults.NextMatch();

                    }

                } catch (ArgumentException ex)
                {
                    // Syntax error in the regular expression
                }

Testo:
12,345
1234,45
1234.45
1234567890
+12,34
-12,34
+1234
-1234
Attention: 1 2 3 test
The number 12345678901234567890 is quite long
1+1=2
troveremo:1234567890

Nessun commento: