正則表達式

一、什麼是正則表達式?

答:正則表達式就是記錄文本規則的代碼

二、基本語法

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]匹配az範圍內的任意小寫字母字符:

[^a-z]匹配任何不在az範圍內的任意字符:

 

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

 

 

#本文由博主原創,轉載需註明!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章