首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RegExKitLite和与符号的问题

RegExKitLite和与符号的问题
EN

Stack Overflow用户
提问于 2009-06-09 21:24:10
回答 2查看 733关注 0票数 0

所以我试图用RegExKitLite从NSString中抓取URL,我遇到了一个奇怪的问题。

代码语言:javascript
复制
NSLog(@"Array: %@", [message componentsMatchedByRegex:@"^(http://)[-a-zA-Z0-9+&@#/%?=~_()|!:,.;]*"]);

NSString *消息只是一些文本,其中包含一个网址。奇怪的是,它不能与其中的&符号一起工作。如果我去掉&符号,它工作得很好,但出于显而易见的原因,我想保留&符号。我也是Regex的新手,所以不要太苛刻我的搜索表达式:)

有没有人在Objective-C中使用过RegExKitLite或RegEx有过这样的经验?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-06-10 01:17:30

在ICU正则表达式字符类中,&表示交集。例如@"[:letter:& a-z]“。因此,它需要引用为Peter suggestion,并使用反斜杠,即正则表达式中的。但是,\在C字符串中有特殊含义,包括Objective C字符串。所以\本身必须用引号引起来。所以你需要在你的模式中使用\&。即-a-zA-Z0-9+\&@#/%?=~_()|!:,.;

另外,我也不确定URL开头的^是什么意思。如果希望正则表达式匹配字符串中的任何位置,则应该使用\b (断字符)。如果您希望它与仅位于消息开头的URL相匹配,那么您将永远只会得到所编写的单个匹配。如果希望它与行开头的URL匹配,那么在正则表达式的开头添加(?m),以启用^的多行匹配(并考虑在正则表达式的末尾添加$)。

票数 4
EN

Stack Overflow用户

发布于 2009-06-09 22:07:16

我没有使用RegExKitLite的经验,也从来没有在字符类中遇到过特殊的&,但是试着在它之前放一个\,看看它是否有效?

代码语言:javascript
复制
NSLog(@"Array: %@", [message componentsMatchedByRegex:@"^(http://)[-a-zA-Z0-9+\&@#/%?=~_()|!:,.;]*"]);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/972585

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档