asp - asp.net - aspcode.it

COMMUNITY - Login
 Username:
 
 Password:
 
Voglio registrarmi!
Password dimenticata?
 Utenti on-line: 0
 Ospiti on-line: 7997
ASPCode.it - Store

  > > Articoli

Introduzione alle Regular Expression (3/3)

Data di pubblicazione: 25/09/2001        Voto della community: 4,42 (Votanti: 4)


In questo terzo appuntamento completeremo il discorso introduttivo sulle R.E., esaminando nuovi metodi e proprietà dell'oggetto in questione, il tutto condito come al solito da alcuni esempi che dimostreranno l'utilità dell'uso delle R.E. anche in situazioni non proprio "ortodosse".

Esempio della colonna Totocalcio

Ecco un esempio "sui generis": diciamo che vogliamo calcolare il numero di segni 1, X e 2 in una colonna del Totocalcio (che ricordo è formata da 13 segni):

<%
Function QuantitaSegno(colonna, segno)
  Dim objRegExpr
  Set objRegExpr = New RegExp
  objRegExpr.Pattern = segno
  objRegExpr.IgnoreCase = TRUE
  objRegExpr.Global = TRUE
  Dim colMatches
  Set colMatches = objRegExpr.Execute(colonna)
  QuantitaSegno = colMatches.Count
End Function

strColonna = “x12xx21x222x1”
strSegno = “X”
Response.Write(“Tot. di segn X: ”& QuantitaSegno(strColonna, strSegno))
%>

La funzione restituirà 5 (ci sono infatti 5 segni x nella colonna).
Naturalmente basterà cambiare il valore di strSegno per calcolare il totale dei segni “1” e “2”.
Nell’esempio appena illustrato abbiamo introdotto due nuove proprietà dell’oggetto RegExpr (quelle scritte in grassetto):
  • IgnoreCase è una proprietà booleana (cioè può assumere due soli valori:”Vero” o “Falso”). Settandola a vero, indichiamo all’oggetto RegExpr di contare tutte le occorrenze del segno “X”, senza fare distinzione tra maiuscole e minuscole (ciò evidentemente non vale per gli “1” e i “2”)
  • Anche Global è una proprietà booleana: quando il suo valore è “Vero”, la R.E. cercherà il carattere per tutta la lunghezza della stringa (altrimenti l’esempio precedente restituirebbe sempre 1)
Altro esempio: e se volessimo sapere se una colonna contiene dei segni “X” consecutivi? (altro condizionamento statistico molto usato per “tagliare” ulteriormente il numero di colonne da mettere in gioco).
Ecco la relativa R.E. :

<%
Function IsCons(colonna, segno)
  Dim objRegExpr
  Set objRegExpr = New RegExp
  objRegExpr.Pattern = "("&segno&segno&")"
  objRegExpr.IgnoreCase = TRUE
  objRegExpr.Global = FALSE
  IsCons= objRegExpr.Test(colonna)
End Function

strColonna = “x12xx21x222x1”
strSegno = “X”

If IsCons(strColonna, strSegno) Then
  Response.Write(“La colonna contiene segni ”& strSegno&” consecutivi.”)
Else
  Response.Write(“La colonna non contiene segni ”& strSegno&” consecutivi.”)
End If
%>

Notate il nuovo metodo Test() dell’oggetto delle R.E. Il suo uso è molto intuitivo:questa funzione ha come argomento una stringa (in questo caso la nostra colonna Totocalcio) e ritornerà “Vero” se la stringa conterrà almeno 2 segni “X” consecutivi (come specificato nel Pattern). Altrimenti restituirà “Falso”.
Da notare inoltre come la proprietà Global sia stata settata a “Falso”:a noi interessa, infatti, che la R.E. termini di esaminare la colonna alla prima consecutività trovata (se questa – ovviamente – esiste).

Spero che abbiate apprezzato quest’uso alquanto “creativo” delle R.E. Questo era solo un piccolo assaggio di cosa è possibile fare con esse. D’altra parte, il presente articolo fa da “ponte” a (spero) futuri articoli che tratteranno la gestione di sistemi a pronostico (Lotto, SuperEnalotto et similia) Spero di aver stuzzicato la vostra curiosità . :-)
Arrivederci.




Utenti connessi: 7997