正規表達式 ^ $ \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,在多行模式下匹配行,可以分辨終止子
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容