Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何从NSString中获取一些特殊字符串?_Ios_Regex_Nsstring - Fatal编程技术网

Ios 如何从NSString中获取一些特殊字符串?

Ios 如何从NSString中获取一些特殊字符串?,ios,regex,nsstring,Ios,Regex,Nsstring,你好,我有一个像这样的字符串 #EXTM3U #EXT-X-VERSION:3 #EXT-X-ALLOW-CACHE:NO #EXT-X-TARGETDURATION:11 #EXT-X-MEDIA-SEQUENCE:2933 #EXTINF:10.031, media_w687716935_2933.mp3 #EXTINF:10.031, media_w687716935_2934.mp3 #EXTINF:10.031, media_w687716935_2935.mp3

你好,我有一个像这样的字符串

#EXTM3U #EXT-X-VERSION:3 #EXT-X-ALLOW-CACHE:NO #EXT-X-TARGETDURATION:11 #EXT-X-MEDIA-SEQUENCE:2933 #EXTINF:10.031, media_w687716935_2933.mp3 #EXTINF:10.031, media_w687716935_2934.mp3 #EXTINF:10.031, media_w687716935_2935.mp3
 NSRegularExpression *regex2 = [NSRegularExpression regularExpressionWithPattern:@"\\w+(?=\\.mp3)" options:NSRegularExpressionCaseInsensitive error:&error];

[regex2 enumerateMatchesInString:strM3u81 options:0 range:NSMakeRange(0, [strM3u81 length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){
}

但在这里,块的内部代码也不例外。那有什么不对?我怎样才能得到这些文件名呢?

我不擅长正则表达式,所以我用另一种方法。 试试这个代码

   NSString *input = @"#EXTM3U\n #EXT-X-VERSION:3\n #EXT-X-ALLOW-CACHE:NO\n #EXT-X-TARGETDURATION:11\n #EXT-X-MEDIA-SEQUENCE:2933\n #EXTINF:10.031,\n media_w687716935_2933.mp3\n #EXTINF:10.031,\n media_w687716935_2934.mp3\n #EXTINF:10.031,\n media_w687716935_2935.mp3";
   NSArray *subBreakingLineStrings = [input componentsSeparatedByString:@"\n"];

    NSMutableArray *results = [NSMutableArray new];
    for (NSString *subString in subBreakingLineStrings) {
        if ([subString rangeOfString:@".mp3"].location != NSNotFound) {
            [results addObject:subString];
        }
    }

    NSLog(@"result = %@", results);
输出:

result = (
    " media_w687716935_2933.mp3",
    " media_w687716935_2934.mp3",
    " media_w687716935_2935.mp3"
)
试试这个。看演示


您尝试过什么吗?是的,我将更新问题“为什么重复?”。mp3文件正在不断更改,所以不能硬编码。我如何在ios中提供此正则表达式?因为它仍然跳过block@user2889249为什么它会跳过块呢?我想它之所以会跳过,是因为它不接受正则表达式exactly@user2889249你是一行一行地提供输入吗?你可以一次通过它
\S+\.mp3