NSRegularExpression:如何匹配以@开头的单词

时间:2011-04-27 20:13:58

标签: iphone objective-c

我想将对@me,@ you,@ them(twitter风格)等用户名的引用转换为链接。什么是正确的NSRegularExpression模式?


根据以下答案的输入,这是我最终使用的......

NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(?<!\\w)@([\\w\\._-]+)?" options:NSRegularExpressionCaseInsensitive error:&error];
NSString *newString = [regex stringByReplacingMatchesInString:stringIn options:0 range:NSMakeRange(0, [stringIn length]) withTemplate:@"<a href='http://mydomain.com/$1'>$0</a>"];

这可能不适合Twitter,因为我自己的网站支持点,短划线和下划线

2 个答案:

答案 0 :(得分:3)

(?<!\w)@\w+应该非常安全。

(?<!\w)被称为Negative Lookbehind,并确保@之前没有字符,以防止匹配电子邮件地址。

答案 1 :(得分:1)

@[a-zA-Z0-9_]+应该很好地完成工作。

我建议在RegExr中抛出一些测试数据并摆弄正则表达式,以便完全符合您的需要。