正規表達式 regex
透過一些特殊符號的方式來處理字串的方法,可使用pythex來練習
特殊符號
符號 | 說明 | 範例表達式 | 符合條件(粗體部分) |
---|---|---|---|
. | 代表一個任意字元(換行符號\n除外) | a.c.e | abcde12345 |
^ | 代表指定字串需在開始處 | ^abc | abcde12345 |
$ | 代表指定字串需在結束處(符號在後面) | 345$ | abcde12345 |
[] [-] | 代表任何符合字元中的內容,可直接輸入字串 也可用a-z或0-9 | [ae5] | abcde12345 |
[^] | 代表不符合字串中字元的內容 | [^ae5] | abcde12345 |
\ | 代表後面的字元(符號)以一般字元處理 | e\\1 | abcde\12345+ |
數量
符號 | 說明 | 範例 | 符合條件(粗體部分) |
---|---|---|---|
* | 代表字串中的字元可以出現0 ~ ∞次 a後面的b出現了0次也可以符合,出現了很多次也可以符合,所以第一個a也符合(因為後面的b沒有出現,是零次) | ab* | aabbccddee\12345+bcd |
+ | 代表字串中的字元可以出現1 ~ ∞次 第一個a後面沒有出現b無法符合(須出現一次),abb出現了兩次b所以符合 | ab+ | aabbccddee\12345+bcd |
? | 代表字串中的字元可出現0~1次 第一個a後面沒有b(0次)符合條件,ab符合一次條件,但是abb後面有兩次b所以不符合條件 | ab? | aabbccddee\12345+bcd |
{m} | 代表指定字串必須出現m次 | b{2} | aabbccddee\12345+bcdbbbcccbbbb |
{m,} | 代表指定字串可以出現m~無限次 | b{2,} | aabbccddee\12345+bcdbbbcccbbbb |
{m,n} | 代表指定字串可以出現m~n次 | b{1,2} | aabbccddee\12345+bcdbbbcccbbbb |
特殊序列
序列 | 說明 | 範例 |
---|---|---|
\d | 數字字元,相當於[0-9] | aabbccddee\12345+bcd |
\D | 非數字字元,相當於[^0-9] | aabbccddee\12345+bcd |
\s | 空白,定位、tab、換行、換頁字元,相當於[ \r\t\n\f] | aabbccddee\12345+bcd |
\S | 非空白,定位、tab、換行、換頁字元,相當於[^ \r\t\n\f] | aabbccddee\12345+bcd |
\w | 數字、字母或底線字元,相當於[0-9a-zA-z_] | abc123+!_@><“ |
\W | 非數字、字母或底線字元,相當於[^0-9a-zA-z_] | abc123+!_@><“ |
\b | 一個單字與單字的空格字元,如果單字之間的空格超過兩個則無法符合(\bmy\b) | 符合:say my name 不符合:say ma name |
\B | 空白字元,如果中間空一格(\B my \B)單字與單字之間須兩個空白以上才符合,如果貼緊單字(\Bmy\B)則必須左右都無空白才符合 | (\B my \B)符合: say my name (\Bmy\B)符合:saymyname |
常用範例
常用 | 表達式 | 範例 |
---|---|---|
整數 | [0-9]+ | 1234567 |
浮點數 | [0-9]+.[0-9]+ | 1.23 |
英文單字 | [a-zA-Z]+ | python |
變數名稱 | [a-zA-Z_][a-zA-Z0-9_]* | _class |
[a-zA-Z0-9_.-]+@[a-zA-Z0-9._-]+ | admin@mimigd.com | |
網址url | https?://[a-zA-Z0-9./_-]+ | http://mimigd.com https://mimigd.com |
圖片url | https?://+[a-zA-Z0-9-/._]+.[jpegpng]+ | https://mimigd.com/wp-content/uploads/2021/12/hebi_aodaisyou.png http://test.com.tw/p1.png |
電話號碼 | \(?\d{2,4}\)?\-\d{6,8} | (02)-12345678 0987-654321 |