使用正则表达式提取两个标记之间的文本

仓库管理

简单的正则表达式问题。我有以下格式的字符串:

[page]
Some text with multi line.
[page/]

[page]
Another text with multi line.
[page/]

[page]
Third text with multi line.
[page/]

[page]之间提取文本的正则表达式是什么[page/]

我正在使用此代码,但我只有第一场比赛。

NSString *path = [[NSBundle mainBundle] pathForResource:@"File" ofType:@"txt"];
NSString *mainText = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];

NSError *error = NULL;
NSRange range = NSMakeRange(0, mainText.length);

   NSString *pattern = [NSString stringWithFormat:@"(?<=\\[page])(?s)(.*?)(?=\\[page/])"];
        NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:&error];
        NSRange rangeOfFirstMatch = [regex rangeOfFirstMatchInString:mainText options:0 range:range];


        if (!NSEqualRanges(rangeOfFirstMatch, NSMakeRange(NSNotFound, 0))) {
            NSString *substringForFirstMatch = [mainText substringWithRange:rangeOfFirstMatch];
            NSLog(@"sub: %@", substringForFirstMatch);
        }

我该如何查看NSArray中每个匹配项的文本?

维克多·斯特里比尤(WiktorStribiżew)

您可以使用matchesInString:options:range:,将匹配项数组作为NSTextCheckingResults返回:

    NSString *pattern = [NSString stringWithFormat:@"(?<=\\[page\\])(.*?)(?=\\[page\\/\\])"];
    NSUInteger options = NSRegularExpressionCaseInsensitive | NSRegularExpressionDotMatchesLineSeparators;
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:options error:&error];

    for (NSTextCheckingResult* result in [regex matchesInString:INPUT_STRING 
                                                    options:0 
                                                      range:NSMakeRange(0, [input_string_length])])
    {
      // further code
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

正则表达式:提取两个标记之间的文本

正则表达式提取两个文本之间的文本并保存文本

如何使用正则表达式提取两个标题之间的文本,需要复杂的非捕获组

使用正则表达式提取python中两个定义的单词之间的内容

使用awk和可变正则表达式提取两个模式之间的行

使用正则表达式仅提取两个特定标签之间的数字

在 bash 脚本中提取文件的两个表达式之间的行(使用正则表达式、sed)

如何使用正则表达式排除两个大括号之间的文本?

用于捕获两个正则表达式模式之间的 n 行文本的正则表达式

正则表达式从文本中提取一个或两个值

使用正则表达式删除两个标记之间的任意数量的换行符

正则表达式捕获两个动态文本之间的文本

正则表达式用于两个文本之间的文本

使用命令提示符在两个文本之间获取文本的正则表达式

仅提取两个正则表达式模式之间的字符串部分

正则表达式提取两个括号之间的数据

提取两个正则表达式之间的字符串

Python正则表达式提取两个特殊字符之间的正数和负数

使用jsoup从两个标签之间提取未识别的html内容?正则表达式?

正则表达式使用python(或nltk)提取两个特定单词之间的内容

正则表达式-提取两个表达式之间的字符串,仅获得最后的出现

使用正则表达式提取括号之间的文本

正则表达式,捕获两个常量之间的任何文本

正则表达式:获取两个单词之间的文本(R中)

正则表达式匹配两个锚点之间的文本

使用正则表达式在我选择的前两个相同字符之间查找文本

如何使用正则表达式提取两行之间的相关文本

使用正则表达式无法从某些文本中提取两个字段

使用正则表达式查找/替换两个html标记