正則表達式
正則表達式是一種字符串搜索工具和匹配工具
Php常用的正則表達式函數如下:
Preg_match($pattern,$subject) 表單驗證等
Preg_match_all($pattern,$subject,array&$matches)
Preg_replace($pattern,$replacement,$subject) 非法詞語過濾等
Preg_filter($pattern,$replacement,$subject)
Preg_grep($pattern,array,$input)
Preg_split($pattern,$subject)
Preg_quote($str)
$pattern=正則表達式
$subject=匹配的目標數據
正則表達式基本語法
界定符
$pattern=’/[0-9]/’;
#[0-9]#
{[0-9]}
原子
- 可見原子
Unicode 編碼表中用鍵盤輸出后肉眼可見的字符
有哪些?
標點:“_?.等等
--英文字母數字 a-z, A-Z,0-9
--漢字、日文、阿拉伯文等其他語言文字
--數理化公式符號
--其他可見字符
- 不可見原子
換行符\n
回車\r
制表符\t
空格
其他不可見符號
量詞
{n} 表示其前面的原子恰好出現n次
{n,} 表示其前面的原子最少出現n次
{n,m}表示其前面的原子最少出現n次,最少出現m次
*匹配 0次、1次或者多次其之前的原子,即{0,}
+ 匹配1次或者多次其之前的原子,即{1,}
? 匹配0次或者1次其之前的原子,即{0,1}
邊界控制
^ 匹配字符串開始的位置
$ 匹配字符串結尾的位置
()匹配其中的整體為一個原子
模式單元
修正模式: 默認為貪婪模式 ,懶惰模式 實在后面加個大寫的U 例如 /123456/U
常見的修正模式
U:懶惰匹配
u:貪婪匹配
i:忽略英文字母大小寫
x:忽略空白(回車,空格等)
s 讓元字符. 匹配包括換行符在內的所有字符
Regexpl正則調試工具
匹配中文時,為避免編碼格式不同產生的錯位,建議先將中文轉換成Unicode編碼
元字符
原子的篩選方式
| 匹配兩個或者多個
[]匹配方括號中的任意一個原子
[^]匹配除方括號中的原子之外的任意字符
元字符
原子的集合
匹配除換行符之外的任意字符
. 除了換行符之外的任意字符
\d 匹配任意一個十進制數字 ,即[0-9]
\D 匹配任意一個非十進制數字,即[^0-9]
\s 匹配一個不可見原子,即[\f\n\r\t\v]
\S 匹配一個可見原子,即[^\f\n\r\t\v]
\w 匹配任意一個數字、字母或下划線,即[0-9a-zA-Z]
w:匹配包括下划線的任何單詞字符。類似但不等價於“[A-Za-z0-9_]”,這里的"單詞"字符使用Unicode字符集。
\W:匹配任何非單詞字符。等價於“[^A-Za-z0-9_]”。
如果用re.sub(r'[_|\W]', '', text) 會除掉所有的非單詞或者下划線"_",
如果用re.sub(r'[_|\w]', 'x', text),會用‘x'替換所有的'_'和單詞字符
常見的正則表達式
.+ 非空
1(3|4|5|7|8)\d{9} 匹配中國大陸的手機號
^\w+(\.\w+)*@\w+(\.\w+)+$ 驗證郵箱的
^(https?://)?(\w+\.)+[a-zA-Z]+$ 網址的
山寨Smarty模板引擎的開發
模板引擎的工作原理
獲取模板源文件
編譯模板(正則替換)
輸出給用戶
仿smarty簡易模板引擎,在一個標准的PHP系統中,模板引擎肯定是要有的,便於前端工程師和后端工程師把工作分開來,而且前端工程師不需要懂后端的代碼。
在線調試工具
http://cs.smu.ca/~porter/csc/355/regexpal/
?: 是 不想被捕獲的時候使用 可以提高程序執行速度