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

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的区别)