美文网首页
正规表达式 ^ $ \A \z \Z的区别

正规表达式 ^ $ \A \z \Z的区别

作者: 一吻江山 | 来源:发表于2018-04-14 19:26 被阅读47次

    Line & Input (行和输入的区别)

    行是以终止子作为标志结束的字符串片段,输入是整一段字符串

    终止子

    (final terminator:\n, \r, \r\n, \u0085, \u2028, \u2029)

    iOS中NSRegularExpression的单行和多行模式

    //单行模式:NSRegularExpressionDotMatchesLineSeparators
    NSRegularExpression *r1 = [NSRegularExpression 
    regularExpressionWithPattern:@"\\AG\\nA\\z"
    options:NSRegularExpressionDotMatchesLineSeparators error:NULL];
            
    //多行模式:NSRegularExpressionAnchorsMatchLines
    NSRegularExpression *r1 = [NSRegularExpression 
    regularExpressionWithPattern:@"\\AG\\nA\\z"
    options:NSRegularExpressionAnchorsMatchLines error:NULL];
    
    

    区别

    Anchors 意思
    ^ 和 $ 分别代表一行(line)的开始和结束的位置
    \A 和 \z 分别代表输入(input)的开始和结束位置
    \Z 代表输入的结尾位置,但是字符串的结尾可以有也可以没有终止子

    例子

    Input Regex 匹配到
    "Google\nApple" \AGoogle\nApple\z "Google\nApple"
    "Google\nApple" \AGoogle\nApple\Z "Google\nApple"
    "Google\nApple\n" \AGoogle\nApple\z
    "Google\nApple\n" \AGoogle\nApple\Z "Google\nApple"

    \Z 可以要求输入的结尾处有一个终止子,这里是\n当然换成\r或者\r\n也行

    结论

    Anchors 意思
    \A 和 \z 匹配的是整段输入,完完整整,不偏不倚,不管在单行模式还是多行模式下
    \A 和 \Z 匹配的是整段输入,结尾终止子可有可无,不管在单行模式还是多行模式下
    ^ 和 $ 在单行模式下匹配整段输入,同 \A 和 \z,在多行模式下匹配行,可以分辨终止子

    相关文章

      网友评论

          本文标题:正规表达式 ^ $ \A \z \Z的区别

          本文链接:https://www.haomeiwen.com/subject/gozlkftx.html