2010-03-16 15 views
11

Qualcuno può aiutarmi a utilizzare Regex con NSPredicate?NSPredicate e Regex

NSString *regex = @"(?:[A-Za-z0-9])"; 
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex]; 
if ([pred evaluateWithObject:mystring]) 
{ 
    //do something 
} 

testare quanto sopra mystring wth - qstring123 non sembra funzionare. Mi aspetto che entri nella condizione if perché dovrebbe corrispondere alla regex.

Inoltre, ho bisogno di un'espressione regolare per alfa numerico che consente virgole e spazi.

funzionerà?

@"(?:[A-Za-z0-9])*(?:,[A-sa-z0-9)*(?:\s[A-sa-s0-9])" 

Si prega di aiutare.

risposta

8

Dalla mia sperimentazione, tenta di far corrispondere la regex con l'intera stringa e non corrisponde a una stringa.

Pertanto, la regex [a-zA-Z0-9]+ funziona, ma non lo è [a-zA-Z0-9].

Con questo in mente, potresti voler rielaborare il tuo predicato di corrispondenza con il virgola, o usare una soluzione di regex più completa, come la stupefacente RegexKit and RegexKitLite.

+0

duh 'ho perso il + alla fine. In realtà ho usato * e ha funzionato. Qual è la differenza? – Dave

+2

'*' corrisponde a 0 o più volte, '+' corrisponde a 1 o più volte. –