python與Regex

來源:互聯網
上載者:User

標籤:元字元   取反   多個   文本   txt   運算式   識別   重複   減法   

一、Regex - 入門篇

1.元字元,及其常用例子
.  匹配除結束符以外的任一字元,某些情況下不能匹配行起始符

^    匹配行的開始

^The  匹配以The打頭的行

$    匹配行的結束

home$ 匹配以home結尾的行

^$   匹配空行

?  匹配0或1個任一字元

*  匹配0到任意多個任一字元

+  匹配1到任意多個任一字元

{}  表示帶尋找的字元要重複的次數

{   量詞起始符

}   量詞結束符

{n,}  代表前面的字元可以重複n到無窮多次

{n1,n2}  代表前面的字元可以重複n1到n2次

[    字元組的起始符

]    字元組的結束符

[0-9]  字元組,匹配數字0-9

[^0-9]  字元組,對[0-9]取反,匹配非數字0-9的任一字元

\    逸出字元

[\+\-\*\-]  字元組,代表加減乘除號

()  用於捕獲分組

(  捕獲分組的起始符

)  捕獲分組的結束符

|  用或(or)的方法進行匹配

\d  數字字元,匹配任意阿拉伯數字,等同於[0-9]

\D  非數字字元,匹配任何一個非數字字元,即\d 取反

\w  小寫\w  單詞字元,匹配字母、數字、底線,即[_a-zA-Z0-9]

\W  大寫的\W 非單詞字元,匹配非單詞字元,即對小寫\w取反,即[^_a-zA-Z0-9]

\a  警告聲音輸出

\b  退格符

\c x 控制符

\f  換頁符

\t  垂直的定位字元

\v  小寫\v 水平的定位字元

\V  大寫\V  非水平定位字元

\h  水平空白符

\H  非水平空白符

\r  斷行符號符

\n  分行符號

\0  Null 字元

\s  小寫\s  匹配空白符,即,能匹配空格、定位字元\t、分行符號\n、斷行符號符\r

\S  大寫\S  匹配非空白符,即小寫\s取反

\0 XXX  字元的八進位值

\x xx   字元的十六進位值

\u xxx  字元的Unicode值

 

2. 舉例:捕獲分組

將模式放入一對圓括弧中,就是將它放進了分組,例如,(\d)\d

 

4. 舉例:後向引用

捕獲分組後,後面可以用\1對捕獲的內容進行後向引用,例如,(\d)\d\1,該模式可以匹配數字字元707,101,212, 505, 等等

 

5. 例子若干,自行體會,加強理解

\d+\.?\d* 匹配形如正整數、正小數的字元
\-?\d+\.?\d* 匹配形如正整數、負整數、正小數、負小數的字元
[^\d\+\-\*\/\(\)\.] 匹配這些字元以外的字元:數字字元、加減乘除號、正反括弧、小數點
[\+\-\*\/\.]{2,} 匹配連續的加減乘除號、小數點
[^\(\)]*\([^\(\)]+\)[^\(\)]* 匹配配對的括弧
\(([\+\-\*\/]*\d+\.?\d*)+\) 匹配最內層括弧
(.*)(\d+\.?\d*)([\*\/])(\d+\.?\d*)(.*) 匹配乘除法運算式
(\-?\d+\.?\d*)([\+\-])(\-?\d+\.?\d*)(.*) 匹配加減法運算式

 

二、Regex - 進階篇

1.使用正在運算式為純文字標籤HTML5標籤

例如,sed -n ‘s/^/<h1>/;s/$/</h1>/p;q‘ rime.txt

rime.txt中的文字將以h1格式(即所有字母大寫)輸出

 

2. 邊界

斷言,又稱零寬度斷言(zero-width assertion),用於標記邊界,但不耗用邊界上的字元,即字元不會返回到匹配結果中。零寬度斷言不匹配字元,而是匹配字串中的位置。例如^ $,也叫作錨位符(anchor)

^  匹配行的開始

$  匹配行的結束

\b  匹配單詞邊界,表面上會匹配空格或起始行,實際匹配的是零寬度的不存在的東西

\B  匹配非單詞邊界,即\b 取反,例如,\Be\B 不會匹配字母e兩邊的字元,但會識別e兩邊是否是非單詞邊界(即,用於標記邊界,但不會將邊界返回到匹配結果中)

可以用\Q和\E之間的字元集,匹配字串的字面值。例如\Q$\E,會匹配$,而非行結束符,因為\Q和\E之間的任一字元都會被解釋為一般字元。

 

 二、python中的re模組

python與Regex

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.