資料清洗 正規表示式

2021-10-21 02:36:27 字數 3164 閱讀 1881

摘錄自

re.match 嘗試從字串的起始位置匹配乙個模式,如果不是起始位置匹配成功的話,match()就返回none;若匹配成功返回匹配到的位置序列,如(0,3)表示該字串在0 1 2 位找到。

函式語法:

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

import re

print

(re.match(

'www'

,'www.runoob.com'

).span())

# 在起始位置匹配

print

(re.match(

'com'

,'www.runoob.com'))

# 不在起始位置匹配(0

,3)none

re.search 掃瞄整個字串並返回第乙個成功的匹配。匹配成功re.search方法返回乙個匹配的物件,否則返回none

函式語法:

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

我們可以使用group(num) 或 groups() 匹配物件函式來獲取匹配表示式。

匹配物件方法 描述

group(num=0) 匹配的整個表示式的字串,

group() 可以一次輸入多個組號,在這種情況下它將返回乙個包含那些組所對應值的元組。

groups() 返回乙個包含所有小組字串的元組,從 1 到 所含的小組號。

import re

line =

"cats are smarter than dogs"

searchobj = re.search( r'(.*) are (.*?) .*'

, line, re.m|re.i)

if searchobj:

print

("searchobj.group() : "

, searchobj.group())

print

("searchobj.group(1) : "

, searchobj.group(1)

)print

("searchobj.group(2) : "

, searchobj.group(2)

)else

:print

("nothing found!!"

)

searchobj.group(

): cats are smarter than dogs

searchobj.group(1)

: cats

searchobj.group(2)

: smarter

compile 函式用於編譯正規表示式,生成乙個正規表示式( pattern )物件,供 match() 和 search() 這兩個函式使用。

語法格式為:

re.compile(pattern[, flags])

引數:pattern : 乙個字串形式的正規表示式

flags 可選,表示匹配模式,比如忽略大小寫,多行模式等,具體引數為:

re.i 忽略大小寫

re.l 表示特殊字符集 \w, \w, \b, \b, \s, \s 依賴於當前環境

re.m 多行模式

re.s 即為』 . 『並且包括換行符在內的任意字元(』 . 『不包括換行符)

re.u 表示特殊字符集 \w, \w, \b, \b, \d, \d, \s, \s 依賴於 unicode 字元屬性資料庫

re.x 為了增加可讀性,忽略空格和』 # '後面的注釋

>>

>

import re

>>

> pattern = re.

compile

(r'\d+'

)# 用於匹配至少乙個數字

>>

> m = pattern.match(

'one12twothree34four'

)# 查詢頭部,沒有匹配

>>

>

print

( m )

none

>>

> m = pattern.match(

'one12twothree34four',2

,10)# 從'e'的位置開始匹配,沒有匹配

>>

>

print

( m )

none

>>

> m = pattern.match(

'one12twothree34four',3

,10)# 從'1'的位置開始匹配,正好匹配

>>

>

print

( m )

# 返回乙個 match 物件

<_sre.sre_match object at 0x10a42aac0

>

>>

> m.group(0)

# 可省略 0

'12'

>>

> m.start(0)

# 可省略 0

3>>

> m.end(0)

# 可省略 0

5>>

> m.span(0)

# 可省略 0(3

,5)

在字串中找到正規表示式所匹配的所有子串,並返回乙個列表,如果沒有找到匹配的,則返回空列表。

和 findall 類似,在字串中找到正規表示式所匹配的所有子串,並把它們作為乙個迭代器返回。

split 方法按照能夠匹配的子串將字串分割後返回列表

re.compile() 返回 regexobject 物件。

group() 返回被 re 匹配的字串。

start() 返回匹配開始的位置

end() 返回匹配結束的位置

span() 返回乙個元組包含匹配 (開始,結束) 的位置

[^0-9] 匹配除了數字外的字元

[pp]ython 匹配 「python」 或 「python」

[a-za-z0-9] 匹配任何字母及數字

.* 表示任意匹配除換行符(\n、\r)之外的任何單個或多個字元

(.*?) 表示"非貪婪"模式,只儲存第乙個匹配到的子串

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...