正規表示式由四部分組成
/^\d$/i
a)定界符 //
b)原子 \d
c)元字元 限制匹配次數
d)模式修改符 i不區分大小寫
1、基礎符號
(1)+:代表前面的字元至少出現一次
(2)*:前面的字元可以出現也可以不出現,或者出現多次
(3)?:前面的字元最多可以出現一次,也可以不出現,或知名乙個非貪婪模式
2、特殊的字元
(1):匹配
輸入字元
串的結尾
的位置,
要匹
配:匹配輸入字串的結尾的位置,要匹配
:匹配輸入字
符串的結
尾的位置
,要匹配
字元本身需要新增$,\d$表示必須以數字結束。
(2)():標記乙個子表示式的開始和結束的位置, ()表示的就是要提取的分組(group)
匹配到的資料存起來,以備下次使用
<?php
$string = 'google 123,456';
$pattern = '/(\w+) (\d+),(\d+)/';
$replacement = 'runoob $,$3';
echo preg_replace($pattern, $replacement, $string);
輸出結果:runoob 123,456
(3):標記乙個中括號的開始,可以用來表示範圍,[a-za-z_)]表示匹配英文本母的大小寫,以及乙個下劃線
[a-za-z_][0-9a-za-z_]更精確地限制了變數的長度是1-20個字元(前面1個字元+後面最多19個字元)。
(4)\:將下乙個字元標記為特殊字元
(5)^:匹配字串的其起始位置 exp:^\d表示必須以數字開頭。
(6){}:匹配輸入字串的開始,詳細見限定符
(7)|:在兩項之間的選擇, a|b可以匹配a或b
(8).:可以匹配任意字元
3、限定符
(1){n}:匹配n次
(2){n,}:至少匹配n次
(3){n,m}:至少匹配n次 最多匹配m次
(4)* :匹配 前面的子表示式零次或多次
(5)+ :匹配前面的子表示式一次或多次
(6)?:匹配前面的子表示式零次或一次
(7)\d:匹配數字
(8)\d:匹配非數字
(9)\w:匹配字母數字下劃線
(10)\w:匹配非字母
(11)\s:匹配乙個空格
(12)/i : 表示匹配的時候不區分大小寫
(13)/g :表示該表示式將用來在輸入字串中查詢所有可能的匹配,返回的結果可以是多個。如果不加/g最多隻會匹配乙個
(14)/m :表示多行匹配,什麼是多行匹配呢?就是匹配換行符兩端的潛在匹配。影響正則中的^$符號
4、貪婪匹配
(1)貪婪匹配的原則是盡可能的,像*和+,加上?號變成非貪婪匹配
example:
由於python的字串本身也用\轉義,使用python的r字首,就不用考慮轉義的問題了
(1):
>>> t = '19:05:30'
>>> m = re.match(r'^(0[0-9]|1[0-9]|2[0-3]|[0-9])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])$', t)
>>> m.groups()
('19', '05', '30')
(2):
>>> m = re.match(r'^(\d)-(\d)$', '010-12345')
>>> m
<_sre.sre_match object; span=(0, 9), match='010-12345'>
>>> m.group(0)
'010-12345'
>>> m.group(1)
'010'
>>> m.group(2)
'12345'
正規表示式 正規表示式函式 筆記
筆記直接使用pycharm製作,需要原始檔請私聊。正規表示式函式 1.match 2.search 3.全域性匹配函式 全域性匹配 re.compile 正規表示式 findall 資料 import re string poythonydasadcasa pat2 p.y 懶惰模式執行 較精準 r...
正規表示式筆記
不同的語系編碼的順序不一樣 lang c 0 1 2 3 a b c d z a b c d z lang zh cn 0 1 2 3 4 a a b b c c z z 使用正規表示式時,需要留意環境的語系是什麼,否則會有不同的結果 alnum 英文大小寫字元及數字 0 9 a z a z alp...
正規表示式筆記
d 0 9中的任意乙個數字 w a z,a z,0 9,中的任意乙個,即字母數字下劃線 s 空格,製表符,換頁符等空白字元的其中任意乙個 小數點可以匹配換行符 n 以外的任意乙個字元 匹配某範圍內的任意乙個字元 ab9 匹配 a b 9 中的任意乙個 abc 匹配abc之外的任意乙個字元 a g 匹...