1.字符匹配
一般字符 | 匹配自身 |
.? | 匹配任意字符(換行符\n除外),一個點占一位 |
\ | 轉義字符,使其后一個字符改變原來的意思(\.就是.) |
[......] | 字符集,對應的位置可以是字符集中的任意字符.字符集中的字符可以逐個列出,也可以給出范圍如[abc]或[a-c] [^abc] 表示取反,即非abc |
2.預定字符集匹配
\d | 數字:[0-9] | a\dc | a1c |
\D | 非數字[\D] | a\Dc | abc |
\s | 匹配任何空白字符:[空格\t\r\n\f\v] | a\sc | a c |
\S | 非空白字符:[\S] | a\Sc | abc |
\w | 匹配包括下劃線在內的任何字符:[A-Za-z0-9_] | a\wc | abc |
\W | 匹配非字母字符,即匹配特殊字符 | a\Wc | a c |
3.字符串數據詞匹配
* | 匹配前一個字符0次或者多次 |
+ | 匹配前一個字符1次或者無限次 |
? | 匹配一個字符0次或1次 |
{} | {m匹配前一個字符m次,{m,n匹配前一個字符m至n次,若省略n次,則匹配m至無限次} |
4.字符串邊界匹配
^ | 匹配字符串開頭,在多行模式中匹配每一行的開頭 |
$ | 匹配字符串末尾,在多行模式中匹配每一行的末尾 |
5.在python中使用?
? ? ? ? 5.1match方法的使用
? ? ? ??
# re是python內置的模塊
import re# 使用 re.compile()函數將正則表達式模式 r'\d+' 編譯成一個
pattern = re.compile(r'\d+')# 以下對 pattern.match() 方法參數的說明
# 參數2 開始位置 指定從字符串的哪個索引位置開始進行匹配
# 參數3 結束位置 指定匹配操作的結束索引位置
# 結束位置是不包含的,即匹配操作會在該索引之前結束
# 匹配一次然后結束,即只要找到第一個匹配就停止匹配
# 匹配一次就結束,即找到第一個匹配就停止匹配
m1 = pattern.match('one12345678',3,7)# 調用m1對象的group方法返回匹配到的字符串
print(m1.group())
? ? ? ? 5.2 search方法的使用
import repattern = re.compile(r'\d+')m1 = pattern.search('one123456789two')
print(m1.group())# 也是一次匹配
? ? ? ? 5.3findall方法的使用
? ? ? ?
import repattern = re.compile(r'\d+')result = pattern.findall('hello 123 world 456')print(result)# pattern.findall() 是 Pattern 對象的一個方法,用于在指定的字符串中查找所有匹配正則表達式模式的子字符串。
# 'hello 123 world 456' 是要搜索的字符串。
# findall() 方法返回一個列表,列表中的每個元素都是一個匹配到的子字符串。如果沒有找到匹配項,返回一個空列表。
6.split函數的使用
import re# 定義一個字符串str1 = 'a,b,c,d,e'# 使用字符串的split方法分割print(str.split(','))str2 = 'a,b;;c d'# 編譯一個正則表達式patterm = re.compile(r'[\s,;]+')# 使用編譯好的正則表達式模式對字符串 str2進行分割
print(pattern.split(str2))
6.sub方法的使用
import restring = '<h1 class="test1">Hello World</h1>'# 編譯一個正則表達式 匹配單個數字pattern = re.compile(r'\d')# 使用sub方法將字符串匹配到的數字 換成2
print(pattern.sub('2',string))# 使用第三個參數 是更換幾次
print(pattern.sub('2',string,1))# 編譯一個正則表達式模式,用于匹配特定格式的 HTML 標簽,并將 class 屬性的值命名為 classname
pattern = re.compile(r'(.\d)\sclass=(?P<classname>.*>?)".*?</(\\)')
# 使用search方法
print(pattern.search(string).gorup())# 定義一個函數 fun,用于處理替換操作
def fun(m):"""該函數用于處理正則表達式替換操作。:param m: 匹配對象,包含匹配到的信息:return: 替換后的字符串"""# 從匹配對象中獲取 classname 組的內容,并拼接字符串return 'after sub' +m.group('classname')# 使用 sub 方法將字符串 string 中匹配到的內容替換為 fun 函數處理后的結果,并打印結果
print(pattern.sub(fun,string))