首頁  >  文章  >  web前端  >  使用正規多行模式與單行模式的圖文詳解

使用正規多行模式與單行模式的圖文詳解

php中世界最好的语言
php中世界最好的语言原創
2018-03-29 16:14:022059瀏覽

這次帶給大家使用正規多行模式與單行模式的圖文詳解,使用正則多行模式與單行模式的注意事項有哪些,下面就是實行案例,一起來看一下。

在Expresso中,測試「多行模式」

測試一

:這裡範例文中3eeeee後面沒有回車,遊標就在e的後面。配對的結果是3eeeee,如上圖的Search Results區所示。

為什麼這裡不能符合1abcde和2abc?

開啟多行模式

^ 可以符合字串開頭(字串的開始位置),也可以符合行的開頭(即換行符\n之後的位置)
$ 可以匹配字串結尾(字串的結束位置), 也可以匹配行的結尾(即換行符\n之前的位置)

關閉多行模式

^ 只能符合字串開頭
$ 只能符合字串結尾

知識點:\r為回車符,\n 為換行符。在windows中,我們平常說的換行,實質上是先回車,後換行;下面有更詳細解說。

如上圖:\r 符合[CR]、\n 符合[LF]   <——  CR為回車  LF為換行 
字串多個段落,像是
ab
cd
e
在windows作業系統中其實是:ab[CR][LF]cd[CR][LF]e

在windows中,文字中的回車換行儲存為: 0D 0A。也就是說,先儲存的是「回車\r」,再儲存的是「換行\n」
CR用符號'\r'表示, ASCII代碼是13, 十六進位為0x0D;
LF用符號'\n'表示, ASCII碼是10, 十六進位為0x0A;

正規表示式:(?m) ^(\d\w+)(\s*)$

範例文字

#比對結果

在Expresso、PHP中,啟用多行模式,"$" 符合字串結束位置或"\n" 之前的位置。

單行模式

開啟單行模式: . 可以匹配任意字元(包括換行符號)
關閉單行模式: . 只有符合非換行的其它任意字元(.可匹配\r,即除了不匹配\n外的所有字元。)

多行模式影響^ 和$ 的匹配
單行模式影響. 的匹配

多行模式中必定包含^ 或$ 或同時包含,否則即使加了m,也沒有任何意義

單行模式和多行模式是八桿子打不著的兩個概念,只是因為正規發展的歷史原因,造就了這樣兩個MS互斥的概念
單行模式影響的是小數點“.”的匹配範圍
多行模式影響的是“^”和“$”的匹配範圍

至於後面幾個概念,全局匹配,多行模式和貪婪模式之間也沒有什麼必然聯繫

全局匹配關閉,只匹配首次成功匹配項,全局匹配開啟,匹配所有成功匹配項
全域模式是一些腳本語言中才有的概念
在進行匹配時,關閉全域模式,類似於.NET中的Match方法,開啟全域模式,類似於.NET中的Matches方法
在進行替換時,關閉全域模式,類似Java中的replaceFirst,開啟全域模式,類似Java中的replaceAll

(進行比對時,關閉全域模式,類似於PHP中的preg_ match函數;開啟全域模式,類似PHP中的preg_ match_ all函數)

#相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

基於PHP正則零寬斷言的使用詳解

#正則表達式的模糊匹配功能如何實現

#

以上是使用正規多行模式與單行模式的圖文詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn