Ho ottenuto una stringa come "stackoverflow.html" e nello stack "espressione regolare" (. ) .html "Mi piacerebbe avere il valore in (.).Come ottenere le corrispondenze in iOS usando l'espressione regolare?
ho potuto trovare solo NSPredicate come:
NSString *string = @"stackoverflow.html";
NSString *expression = @"stack(.*).html";
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", expression];
BOOL match = [predicate evaluateWithObject:string]
Ma che dice solo ho ottenuto una partita e non restituisce una stringa, quando uso NSRegularExpression:
NSRange range = [string rangeOfString:expression options:NSRegularExpressionSearch|NSCaseInsensitiveSearch];
if (range.location == NSNotFound) return nil;
NSLog (@"%@", [string substringWithRange:(NSRange){range.location, range.length}]);
E mi darà la stringa totale indietro, stackoverflow.html, ma sono interessato solo a ciò che è in (. *). Voglio tornare 'overflow'. In PHP questo è stato facile da fare, ma come puoi farlo in xCode per iOS?
Logicamente se farei questo:
NSInteger firstPartLength = 5;
NSInteger secondPartLength = 5;
NSLog (@"%@", [string substringWithRange:(NSRange){range.location + firstPartLength, range.length - (firstPartLength + secondPartLength)}]
Mi dà il risultato propert 'overflow'. Ma il problema è che in molti casi non conosco la lunghezza della prima parte o della seconda parte. Quindi c'è un modo per ottenere il valore che dovrebbe essere in (. *)?
Oppure devo decidere di scegliere il metodo più brutto trovando la posizione di (. ) e calcolare la prima e la seconda parte da lì? Ma nell'espressione regolare si potrebbe anche avere ([a-z]) ma poi il modo brutto di usare un'altra espressione regolare per ottenere la posizione dei valori tra() e quindi usarlo per calcolare la parte sinistra e destra? E cosa succede se ne ho di più? come 'A (.) dovrebbe trovare la risposta a (. *).' Mi piacerebbe avere un array come risultato con valori [0] il valore dopo A e [1] il valore dopo a.
Spero che la mia domanda sia chiara.
Grazie in anticipo,
penso NSRegularExpression più utile – SAKrisT
Rispetto a Perl o Ruby o molte altre lingue, NSRegularExpression è potente, ma nei casi più comuni utilizza un paragrafo a che fare una pena vale la pena di lavoro. Mi piace come questo esempio di libreria possa farti abbinare un'espressione e catturare un gruppo in una riga ragionevole. –