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