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,在多行模式下匹配行,可以分辨終止子 |