我有一些代码(如下),每当文本更改时,该代码都会在uitextfield中解析标签和@ -symbols。它可以与以下项目一起正常工作:
#one #two
..但是当两个具有标签的标签彼此相邻时失败,如下所示:
#one#two
这是我的代码:
- (IBAction)changed:(UITextField*)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;
}
什么是正确的正则表达式同时处理空间和无空间?
我没有分析您的整个模式,但是我测试了您的代码并仅检测您应该使用的标签:
NSRegularExpression *regexp = [[NSRegularExpression alloc] initWithPattern:@"#[^# ]+" options:NSRegularExpressionCaseInsensitive error:nil];
输出:
输出__NSCFString * @“#dl \ n#laklkjdfg \ n#glkjs \ n” 0x1839cab0
为了:
NSString *text = @"#dl#laklkjdfg #glkjs";
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句