- 參考
- - 部分
- . :匹配任意字元,除了n
- :匹配來自字符集的任意單一字元
- d:匹配數字
- d:匹配非數字
- s:匹配空白字元(包括r、n、t等)
- s:匹配非空白字元
- w:匹配字母/數字/下劃線
- w:匹配非字母/數字/下劃線
- * :匹配0次或多次
- + :匹配1次或多次
- ? :匹配0次或1次
- :匹配至少m次至多n次
- ^ :匹配字串的開始
- $ :匹配字串的結束
- b:匹配單詞的邊界
- (exp):匹配exp並捕獲到自動命名的組中
- (? exp):匹配exp並捕獲到名為name的組中
- | :分支
- re.i 使匹配對大小寫不敏感
- re.l 做本地化識別(locale-aware)匹配
- re.m 多行匹配,影響 ^ 和 $
- re.s 使 . 匹配包括換行在內的所有字元
- re.u 根據unicode字符集解析字元。這個標誌影響 w, w, b, b.
- re.x 該標誌通過給予你更靈活的格式以便你將正規表示式寫得更易於理解。
使用compile將表示正則的字串編譯為乙個pattern物件
通過pattern物件提供一系列方法對文字進行查詢匹配,獲得匹配結果,乙個match物件
最後使用match物件提供的屬性和方法獲得資訊,根據需要進行操作
search(string[, pos[, endpos]])
findall(string[, pos[, endpos]])
finditer 方法
split(string[, maxsplit])
sub(repl, string[, count])
subn(repl, string[, count])
# 查詢數字
import re
p = re.compile(r'd+')
m = p.match("one12twothree33456four78", 3, 26)
print(m)
print(m[0])
print(m.start(0))
print(m.end(0))
<_sre.sre_match object span="(3," match="12">123
5import re
p = re.compile(r'([a-z]+) ([a-z]+)', re.i)
m = p.match("i am relly love wangxiaojing")
print(m)
print(m.group(0))
print(m.start(0))
print(m.end(0))
<_sre.sre_match object span="(0," match="i am">
i am04
print(m.group(2))
print(m.start(1))
print(m.end(1))am0
1
import re
p = re.compile(r'd+')
m = p.search("one12two34three567four")
print(m.group())
12rst = p.findall("one12two34three567four")
print(type(rst))
print(rst)
['12', '34', '567']
# sub替換的案例
import re
p = re.compile(r'(w+) (w+)')
s = "hello 123 wang 456 xiaojing, i love you"
rst = p.sub(r"hello world", s)
print(rst)
hello world hello world xiaojing, hello world you
import re
title = u'世界 你好, hello moto'
p = re.compile(r'[u4e00-u9fa5]+')
r = p.findall(title)
print(r)
['世界', '你好']
import re
title = u'name
age'
p1 = re.compile(r'.*
')p2 = re.compile(r'.*?
')m1 = p1.search(title)
print(m1.group())
m2 = p2.search(title)
#print(m2)
print(m2.group())
name
agename
# 1、匹配一行文字中所有開頭的字母
import re
s = ' i love you but you don't love me'
content = re.findall(r'bw', s)
print(content)
['i', 'l', 'y', 'b', 'y', 'd', 't', 'l', 'm']
# 2、匹配一行文字中所有數字開頭的內容
import re
s = 'i 22love 33you 44but 5you don't66 7love 88me'
content = re.findall(r'bd', s)
print(content)
['2', '3', '4', '5', '7', '8']
# 3、匹配只含數字和字母的行
s = 'i love you n2222kkkk but ndfe23 you dont love n23243dd'
content =re.findall(r'w+', s, re.m)
print(content)
['i', 'love', 'you', '2222kkkk', 'but', 'dfe23', 'you', 'dont', 'love', '23243dd']
python正則 python正則表達
正規表示式是一種用來匹配字串的強有力的 設計思想是用一種描述性的語言來給字串定義乙個規則,凡是符合規則的字串,就認為它 匹配 否則就不匹配。一 可以通過幾類符號設計限定規則,常用的思想如下 匹配除換行符以外的任意字元 w匹配字母 數字 下劃線或漢字 w匹配字母 數字 下劃線或漢字以外的字元 s匹配任...
python正則判斷 Python 正規表示式
一 基礎語法 1.1 語法速查 1.2 最簡單的正則匹配 學習正則一般是從 match 和 search 函式開始,推薦教程。match match pattern,string 函式會從字串的頭部開始搜尋,如果匹配到了 pattern 則將其結果存入 group 中,匹配到了幾次就存入幾次,如果沒...
python正則表達
這學期的課涉及到處理網頁資訊,但是具體操作方法老師不在課上教,所以打算自己學一下python爬蟲。先從正則表達開始吧。findall 這個函式的用法就是字面意思 找到所有匹配的物件。其返回值是乙個列表,如果尋找的目標不存在,則返回乙個空列表。輸出返回值的方法是直接放在print裡,或者賦值給乙個變數...