正规表达式 ^ $ \A \z \Z的区别
2018-04-14 本文已影响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,在多行模式下匹配行,可以分辨终止子 |