1

我正在制作一个 iphone 应用程序。我有一个场景,我有一个巨大的字符串,它有很多数据,我想从字符串中只提取电子邮件地址。

例如,如果字符串像

asdjasjkdh asdhajksdh jkashd sample@email.com asdha jksdh asjdhjak sdkajs test@gmail.com

我应该提取“sample@email.com”和“test@gmail.com”

而且我还想从字符串中仅提取日期

例如,如果字符串像

asdjasjkdh 01/01/2012 asdhajksdh jkas 12/11/2012 hd sample@email.com asdha jksdh asjdhjak sdkajs test@gmail.com

我应该提取“01/01/2012”和“12/11/2012”

一个小代码片段,将非常有帮助。

提前致谢

4

3 回答 3

10

这将做你想要的:

// regex string for emails (feel free to use a different one if you prefer)
NSString *regexString = @"([A-Za-z0-9_\\-\\.\\+])+\\@([A-Za-z0-9_\\-\\.])+\\.([A-Za-z]+)";

// experimental search string containing emails
NSString *searchString = @"asdjasjkdh 01/01/2012 asdhajksdh jkas 12/11/2012 hd sample@email.com asdha jksdh asjdhjak sdkajs test@gmail.com";

// track regex error
NSError *error = NULL;

// create regular expression
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:regexString options:0 error:&error];

// make sure there is no error
if (!error) {

    // get all matches for regex
    NSArray *matches = [regex matchesInString:searchString options:0 range:NSMakeRange(0, searchString.length)];

    // loop through regex matches
    for (NSTextCheckingResult *match in matches) {

        // get the current text
        NSString *matchText = [searchString substringWithRange:match.range];

        NSLog(@"Extracted: %@", matchText);

    }

}

使用上面的示例字符串:

asdjasjkdh 01/01/2012 asdhajksdh jkas 12/11/2012 hd sample@email.com asdha jksdh asjdhjak sdkajs test@gmail.com

输出是:

Extracted: sample@email.com
Extracted: test@gmail.com

要使用代码,只需设置searchString为您要搜索的字符串。代替 NSLog() 方法,您可能想要对提取的字符串做一些事情matchText。随意使用不同的正则表达式字符串来提取电子邮件,只需替换regexString代码中的值。

于 2012-12-12T03:42:10.057 回答
1
NSArray *chunks = [mylongstring componentsSeparatedByString: @" "];

for(int i=0;i<[chunks count];i++){
    NSRange aRange = [chunks[i] rangeOfString:@"@"];
    if (aRange.location !=NSNotFound) NSLog(@"email %@",chunks[i] );
}
于 2012-11-08T14:17:18.670 回答
0

您可以使用此正则表达式来匹配电子邮件

 [^\s]*@[^\s]*

这个正则表达式匹配日期

 \d+/\d+/\d+
于 2012-11-08T12:47:07.863 回答