我有一些代码(如下),当文本发生变化时,它会解析一个 uitextfield 的主题标签和 @-symbols。它适用于:
#one #two
..但是当两个标签彼此相邻时失败,如下所示:
#one#two
这是我的代码:
- (IBAction)changedUITextField*)sender
{
NSRegularExpression *regexp = [[NSRegularExpression alloc] initWithPattern"(?:^|\\s|[\\p{Punct}&&[^/]])((#[\\p{L}0-9-_]+)|(@[\\p{L}0-9-_\\.]+))" options:NSRegularExpressionCaseInsensitive error:nil];
NSArray *matches = [regexp matchesInString: [sender text] options:0 range:NSMakeRange(0, [[sender text] length])];
NSMutableString *output = [[NSMutableString alloc] init];
for (NSTextCheckingResult *linkRange in matches) {
NSString *match = [[sender text] substringWithRange:[linkRange rangeAtIndex:1]];
[output appendString:match];
[output appendString"\n"];
}
self.label.text = output;
}
处理空格和无空格的正确正则表达式是什么?
Best Answer-推荐答案 strong>
我没有分析您的整个模式,但我测试了您的代码并仅检测您应该使用的主题标签:
NSRegularExpression *regexp = [[NSRegularExpression alloc] initWithPattern"#[^# ]+" options:NSRegularExpressionCaseInsensitive error:nil];
输出:
output __NSCFString * @"#dl\n#laklkjdfg\n#glkjs\n" 0x1839cab0
为:
NSString *text = @"#dl#laklkjdfg #glkjs";
关于ios - 用于触摸主题标签的 Objective-C 正则表达式,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/23108751/
|