首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regexkit lite和iPhone解析

Regexkit lite和iPhone解析
EN

Stack Overflow用户
提问于 2009-07-08 19:24:35
回答 2查看 2.2K关注 0票数 2

我采纳了这里推荐regexkit lite的一些帖子的建议,因为我在尝试从字符串中提取特定URL时遇到了问题。问题是,我对使用它的语法非常迷惑,并希望使用过它的人能帮我一把。

我试图解析的字符串看起来像这样:

代码语言:javascript
复制
<a> blah blah blah <img src="http://www.something.com/1234.jpg">

我只想提取1234。应该在"/“之后,在".jpg”之前

我该怎么做呢?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-08 19:30:59

如果您正在尝试解析任何看起来像/1234.jpg的字符串,那么正则表达式是一个很好的选择。如果仅在img 标记中需要看起来像HTML字符串,则使用解析器,而不是正则表达式。

如果是第一种情况,则此表达式将匹配"/1234.jpg“。您可以很容易地摆脱/.jpg部件。

代码语言:javascript
复制
(/.+?\\.jpg)

该表达式表示“查找以/开头、以.jpg结尾并包含介于两者之间的任何内容的字符串”。

使用look-aheads和look-behinds,这个只匹配"1234":

代码语言:javascript
复制
(?<=/).+?(?=\\.jpg)

这个表达式写着“寻找/,匹配任何东西,直到.jpg是下一个。”

票数 2
EN

Stack Overflow用户

发布于 2009-07-08 19:30:52

以下是RegexKitLite文档中的一个你应该能够适应的食谱:

代码语言:javascript
复制
NSString *searchString =@"http://johndoe:secret@www.example.com:8080/private/mail/index.html";
NSString *regexString  = @"\\b(https?)://(?:(\\S+?)(?::(\\S+?))?@)?([a-zA-Z0-9\\-.]+)(?::(\\d+))?((?:/[a-zA-Z0-9\\-._?,'+\\&%$=~*!():@\\\\]*)+)?";

if([searchString isMatchedByRegex:regexString]) {
  NSString *protocolString = [searchString stringByMatching:regexString capture:1L];
  NSString *userString     = [searchString stringByMatching:regexString capture:2L];
  NSString *passwordString = [searchString stringByMatching:regexString capture:3L];
  NSString *hostString     = [searchString stringByMatching:regexString capture:4L];
  NSString *portString     = [searchString stringByMatching:regexString capture:5L];
  NSString *pathString     = [searchString stringByMatching:regexString capture:6L];

  NSMutableDictionary *urlDictionary = [NSMutableDictionary dictionary];

  if(protocolString) { [urlDictionary setObject:protocolString forKey:@"protocol"]; }
  if(userString)     { [urlDictionary setObject:userString     forKey:@"user"];     }
  if(passwordString) { [urlDictionary setObject:passwordString forKey:@"password"]; }
  if(hostString)     { [urlDictionary setObject:hostString     forKey:@"host"];     }
  if(portString)     { [urlDictionary setObject:portString     forKey:@"port"];     }
  if(pathString)     { [urlDictionary setObject:pathString     forKey:@"path"];     }

  NSLog(@"urlDictionary: %@", urlDictionary);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1100063

复制
相关文章

相似问题

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