天天看點

Python-正規表達式總結版

前言:

總是寫不好正規表達式,時間長不用就有些忘記了,故此在總結一篇文章以便日後查閱。

一、常用的比對規則總結表

模式 描述

\w

比對字母數字及下劃線

\W

比對非字母數字及下劃線

\s

比對任意空白字元,等價于 [\t\n\r\f].

\S

比對任意非空字元

\d

比對任意數字,等價于 [0-9]

\D

比對任意非數字

\A

比對字元串開始

\Z

比對字元串結束,如果是存在換行,隻比對到換行前的結束字元串

\z

比對字元串結束

\G

比對最後比對完成的位置

\n

比對一個換行符

\t

比對一個制表符

^

比對字元串的開頭

$

比對字元串的末尾

.

比對任意字元,除了換行符

[...]

用來表示一組字元,單獨列出:[amk] 比對 'a','m' 或 'k'

[^...]

不在 [] 中的字元:[^abc]比對除了 a,b,c 之外的字元。

*

比對 0 個或多個的表達式。

+

比對 1 個或多個的表達式。

?

比對 0 個或 1 個由前面的正規表達式定義的片段,非貪婪方式

{n}

精确比對 n 個前面表達式。

{n, m}

比對 n 到 m 次由前面的正規表達式定義的片段,貪婪方式

a \| b

比對 a 或 b

( )

比對括号内的表達式,也表示一個組

相關具體應用例子,請見:

Python-正規表達式

二、re庫中常用方法

函數

re.match(pattern, string, flags=0)

嘗試從字元串的起始位置比對一個模式,如果不是起始位置比對成功的話,match()就傳回none

re.search(pattern, string, flags=0)

掃描整個字元串并傳回第一個成功的比對

re.sub(pattern, repl, string, count=0)

用于替換字元串中的比對項,repl : 替換的字元串,也可為一個函數

re.compile(pattern[, flags])

用于編譯正規表達式,生成一個正規表達式( Pattern )對象,供 match() 和 search() 這兩個函數使用

findall(string[, pos[, endpos]])

在字元串中找到正規表達式所比對的所有子串,并傳回一個清單,如果沒有找到比對的,則傳回空清單

re.split(pattern, string[, maxsplit=0, flags=0])

能夠比對的子串将字元串分割後傳回清單

三、修飾符總結

修飾符

re.I

使比對對大小寫不敏感

re.L

做本地化識别(locale-aware)比對

re.M

多行比對,影響 ^ 和 $

re.S

使 . 比對包括換行在内的所有字元

re.U

根據Unicode字元集解析字元。這個标志影響 \w, \W, \b, \B.

re.X

該标志通過給予你更靈活的格式以便你将正規表達式寫得更易于了解。

取值可以使用按位或運算符'|'表示同時生效,比如re.I | re.M。

四、常用正規表達式

1、比對email位址:
[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?

2、比對網址URL:
[a-zA-z]+://[^\s]*

3、比對18位身份證号:
^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$

4、比對年月日格式:
([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))

5、比對整數:
^-?[1-9]\d*$

6、比對正整數:
^[1-9]\d*$

7、比對負整數:
^-[1-9]\d*$

8、比對空白行:
\n\s*\r           

以上,對你有幫助的話就點贊️吧~

作者:

擱淺

出處:

http://www.cnblogs.com/xiaoxi-3-/

如果對您有幫助,請關注我的同名簡書:

https://www.jianshu.com/u/da1677475c27

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。

繼續閱讀