所以我试图用RegExKitLite从NSString中抓取URL,我遇到了一个奇怪的问题。
NSLog(@"Array: %@", [message componentsMatchedByRegex:@"^(http://)[-a-zA-Z0-9+&@#/%?=~_()|!:,.;]*"]);NSString *消息只是一些文本,其中包含一个网址。奇怪的是,它不能与其中的&符号一起工作。如果我去掉&符号,它工作得很好,但出于显而易见的原因,我想保留&符号。我也是Regex的新手,所以不要太苛刻我的搜索表达式:)
有没有人在Objective-C中使用过RegExKitLite或RegEx有过这样的经验?
发布于 2009-06-10 01:17:30
在ICU正则表达式字符类中,&表示交集。例如@"[:letter:& a-z]“。因此,它需要引用为Peter suggestion,并使用反斜杠,即正则表达式中的。但是,\在C字符串中有特殊含义,包括Objective C字符串。所以\本身必须用引号引起来。所以你需要在你的模式中使用\&。即-a-zA-Z0-9+\&@#/%?=~_()|!:,.;
另外,我也不确定URL开头的^是什么意思。如果希望正则表达式匹配字符串中的任何位置,则应该使用\b (断字符)。如果您希望它与仅位于消息开头的URL相匹配,那么您将永远只会得到所编写的单个匹配。如果希望它与行开头的URL匹配,那么在正则表达式的开头添加(?m),以启用^的多行匹配(并考虑在正则表达式的末尾添加$)。
发布于 2009-06-09 22:07:16
我没有使用RegExKitLite的经验,也从来没有在字符类中遇到过特殊的&,但是试着在它之前放一个\,看看它是否有效?
NSLog(@"Array: %@", [message componentsMatchedByRegex:@"^(http://)[-a-zA-Z0-9+\&@#/%?=~_()|!:,.;]*"]);https://stackoverflow.com/questions/972585
复制相似问题