如何编写正则表达式?
How to write Regex?
我有NSString
这样的
/:012/:^_^/:^$^ some string
如何使用正则表达式 (NSRegularExpression
) 提取以 /:
开头的单词,请协助。谢谢
您可以使用
NSString *pattern = @"/:\S*?(?=/:|\s|$)";
参见regex demo。
详情:
/:
- /:
子串
\S*?
- 除空格外的零个或多个字符,尽可能少直到(但不包括)以下第一次出现的字符:
(?=/:|\s|$)
- /:
子字符串、空格或字符串结尾。
NSError *error = nil;
NSString *pattern = @"/:\S*?(?=/:|\s|$)";
NSString *string = @"/:012/:^_^/:^$^ some string";
NSRange range = NSMakeRange(0, string.length);
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:&error];
NSArray *matches = [regex matchesInString:string options:0 range:range];
for (NSTextCheckingResult *match in matches) {
NSRange matchRange = [match range];
NSString *m = [string substringWithRange:matchRange];
NSLog(@"Matched string: %@", m);
}
结果:
Matched string: /:012
Matched string: /:^_^
Matched string: /:^$^
我有NSString
这样的
/:012/:^_^/:^$^ some string
如何使用正则表达式 (NSRegularExpression
) 提取以 /:
开头的单词,请协助。谢谢
您可以使用
NSString *pattern = @"/:\S*?(?=/:|\s|$)";
参见regex demo。
详情:
/:
-/:
子串\S*?
- 除空格外的零个或多个字符,尽可能少直到(但不包括)以下第一次出现的字符:(?=/:|\s|$)
-/:
子字符串、空格或字符串结尾。
NSError *error = nil;
NSString *pattern = @"/:\S*?(?=/:|\s|$)";
NSString *string = @"/:012/:^_^/:^$^ some string";
NSRange range = NSMakeRange(0, string.length);
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:0 error:&error];
NSArray *matches = [regex matchesInString:string options:0 range:range];
for (NSTextCheckingResult *match in matches) {
NSRange matchRange = [match range];
NSString *m = [string substringWithRange:matchRange];
NSLog(@"Matched string: %@", m);
}
结果:
Matched string: /:012
Matched string: /:^_^
Matched string: /:^$^