How might I go about searching/enumerating through an NSString
using a regular expression?
A regular expression such as: /(NS|UI)+(\w+)/g
.
Regular expressions are used with the RegExp methods test() and exec() and with the String methods match() , replace() , search() , and split() .
Using test() The test() method is a RegExp expression method. It searches a string for a pattern, and returns true or false, depending on the result.
You need to use NSRegularExpression
class.
Example inspired in the documentation:
NSString *yourString = @""; NSError *error = NULL; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(NS|UI)+(\\w+)" options:NSRegularExpressionCaseInsensitive error:&error]; [regex enumerateMatchesInString:yourString options:0 range:NSMakeRange(0, [yourString length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){ // your code to handle matches here }];
If you just want to match some pattern in string, there is a simple way to test Regular Expression with NSString
:
NSString *string = @"Telecommunication"; if ([string rangeOfString:@"comm" options:NSRegularExpressionSearch].location != NSNotFound) NSLog(@"Got it"); else NSLog(@"No luck");
Note, often you'll want ...
if ([string rangeOfString:@"cOMm" options:NSRegularExpressionSearch|NSCaseInsensitiveSearch].location != NSNotFound) NSLog(@"yes match");
In Swift you may write code like this ...
let string = "Telecommunication" if string.rangeOfString("cOMm", options: (NSStringCompareOptions.RegularExpressionSearch | NSStringCompareOptions.CaseInsensitiveSearch)) != nil { print("Got it") } else { print("No luck") }
let string = "Telecommunication" if string.range(of: "cOMm", options: [.regularExpression, caseInsensitive]) != nil { print("Got it") } else { print("No luck") }
Please take note that Swift 2's rangeOfString(_:,options:)
and Swift 4's range(of:options:)
return Range<String.Index>?
that returns nil if search failed
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With