Le regular expression permettono di ricercare, tramite 'pattern' più o meno complessi, porzioni stringhe in un testo.
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).
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
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:
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:
Posta un commento