一、什麼是正則表達式?
答:正則表達式就是記錄文本規則的代碼
二、基本語法
1.基礎類:
. —— 匹配除“\n”之外的任何單個字符
\ —— 將下一個字符標記爲一個特殊字符
Eg.表示0~9所有數字
正則表達式:\d
? —— 當該字符緊跟在任何一個其他限制符(*,+,?,{n},{n,},{n,m})後面時,匹配模式是非貪婪的
Eg. 如果hel+會匹配he和多個l,但如果是hel+?就會懶惰匹配一個l:
x|y —— 匹配x或y
Eg. a|hello可以匹配到a和hello:
2.定界符:
^ —— 匹配輸入字符的開始位置,$ —— 匹配輸入字符的結束位置
Eg.123hello123如果想表示123開始,123結尾
正則表達式:^123.*123$
.*代表除換行符以外的所有字符,基本匹配所有字符
\b —— 匹配一個單詞邊界,也就是指單詞和空格間的位置,\B —— 匹配非單詞邊界
Eg.只匹配了單詞邊界中的er:
只匹配了非單詞邊界的er:
只輸入er會匹配所有的er:
3.個數/次數:
* —— 匹配前面的子表達式0次或多次
+ —— 匹配前面的子表達式1次或多次
? —— 匹配前面的子表達式0次或1次
Eg.
l+,l*都可以匹配到兩個l:
*修飾l,它們4個均能匹配到,說明l可有可無:
+修飾l,它們中有l的才能匹配到,即l必須出現一次或以上:
?修飾l,它們中l未出現或只出現1次的才能被匹配上:
{n}——n表示固定次數,{n,}——表示最少n次,{n,m}——最少有n次,最多有m次
其中,n,m均爲非負整數,n<=m
等價關係:
Eg.
{0,1}修飾l,即匹配到l最少未出現,最多出現1次:
4.範圍:
[xyz]——字符集合,在xyz裏面選一個
[^xyz]——負值字符集合,處理xyz其餘23個字母都可以
Eg.從xyz中任選一個匹配:
取反,除了xyz都匹配,a被匹配了,\n換行符也被匹配了:
[a-z]——字符範圍,從a-z,[^a-z]——負值字符範圍,取反除了a-z,大寫
Eg. [a-z]匹配a到z
範圍內的任意小寫字母字符:
[^a-z]匹配任何不在a
到z
範圍內的任意字符:
5.空白符:
\f——匹配一個換頁符,\n——匹配一個換行符
\r——匹配一個回車符,\t——匹配一個製表符
Eg.\n|\t匹配了換行符和製表符(tab):
6.高能語法:
\d——匹配一個數字字符,\D——匹配一個非數字字符
\s——匹配任何空白字符,包括空格、製表符、換頁符等,\S——匹配任何非空白字符
\w——匹配字母、數字、下劃線,\W——匹配非字母、數字、下劃線
Eg.匹配數字字符\d==[0,9]:
\D匹配了所有非數字字符的標符:
\s匹配了所有空白的字符,空格、製表符、換行符:
\S匹配非空白字符:
\w匹配了字符、數字、下劃線:
\W匹配非字母、數字、下劃線:
三、如何在Python中使用正則表達式?
re模塊是Python自己的模塊不需要安裝引用即可,import re
re模塊->查找->re.search(只匹配第一個,不管後面的,把找到的第一個生成爲一個對象)->re.findall(把所有匹配結果都找到,生成一個列表)
re模塊->替換->re.sub()
附:
正則表達式手冊全集:http://tool.oschina.net/uploads/apidocs/jquery/regexp.html
#本文由博主原創,轉載需註明!