Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. 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!
        

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.

PM Quote