Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - RegEx [C#.Net]
Forum - C# / VB.NET - RegEx [C#.Net]

Avatar
TheEngi (Ex-Member)
Pro


Messaggi: 145
Iscritto: 30/08/2009

Segnala al moderatore
Postato alle 20:42
Domenica, 22/08/2010
Ciao a tutti... ho appena iniziato ad usare i regex e avrei una piccola domanda...
avendo questo regex: public Regex primo = new Regex(@"\b(aaa|aad|aam|popfd|push|stos)\b", RegexOptions.IgnoreCase);

vorrei trovare tutte le parole che invece che siamo errate confrontandole con quelle del regex...

esmpio: aad io vorrei che il mio programma trovasse le parole tipo ada o daa

come faccio?

grazie a tutti quelli che mi daranno una mano!
        


The Engineer
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 11:43
Lunedì, 23/08/2010
Non è possibile farlo. Puoi solo ottenere tutte le parole formate da 3 o 4 lettere e controllare che non siano tra quelle elencate.
Esiste il costrutto di raggruppamento (?<!expr) che annulla il match della regex se l'espressione a destra di tale regex non corrisponde a expr. Ad esempio:
Codice sorgente - presumibilmente Plain Text

  1. (?<!\s*\w{4}\s+)\d+


prende tutte le espressioni che corrispono a \d+ solo se non sono precedute dall'espressione \s*\w{4}\s+. Alcuni esempi
Codice sorgente - presumibilmente Plain Text

  1. 56  >  match
  2. abc 56  >  match
  3. abcd  90  >  mismatch
  4.  a q w iiii 190  >  mismatch


Se tu scrivessi:
Codice sorgente - presumibilmente Plain Text

  1. (?<!\b(aaa|aad|aam|popfd|push|stos)\b)


Otterresti solo tutte le stringhe vuote non precedute a aaa o aad, eccetera... Quindi non è possibile farlo con questo costrutto.

Se stai cercando di scrivere un parser per assembler, ti consiglio di non usare le regex.


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote