Struny są badane wyglądać następująco (zauważyć spacje w nawiasach):W jaki sposób można usunąć białe znaki z grupy przechwytującej Regex?
[name] [address ] [ zip] [ phone number ]
Wyrażenie Jestem obecnie za pomocą ...
\[([^\])]*)\]
... skutecznie wychwytuje każdy tekst w obrębie wsporniki, ale również chwyta przednią i tylną przestrzeń więc skończyć z:
"name" "address " " zip" " phone number "
Ale co szukam jest:
"name" "address" "zip" "phone number"
Jak można się przekonać regex nie uchwycić spacje w tych przykładach? (Z wyjątkiem wbudowanego spacji - na przykład, że pomiędzy słowa „numer telefonu”).
(Uwaga: wiem, może po prostu przyciąć go od złapanych zmienna po wyrażenie jest zrobione, ale I” Próbuję to zrobić w kontekście kontekstem wyrażenia.)
Dzięki za wszelkie pomysły! Poniżej znajduje się dokładny kod, którego używam do przetestowania tego:
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\[([^\\])]*)\\]" options:0 error:nil];
NSString *string = @" [name] [address ] [ zip] [ phone number ] ";
NSString *modifiedString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length])
withTemplate:@"\n\n[$1]"]; //note: adding brackets back here just to make it easy to see if the space has been trimmed properly from the captured value
NSLog(@"\n\n%@", modifiedString);
To niby zabawny pytanie do mnie, jak pisałem regex i Objective-C od lat, ale nigdy nie łączy się je za pomocą 'NSRegularExpression' wcześniej. :) –
Dziękuję, to jest idealne! Jeśli jesteś nowym NSRegularExpression sprawdzić swoją „enumerateMatchesInString: opcje: Zakres: usingBlock:” metodę jakiegoś blokowe dobroci: http://blog.kvnd.me/post/10186864667/regular-expressions-in-ios –
Czy pierwszy prawy nawias ")" obcy? Wygląda na to, że działa bez niego. –