python學習--正則表達式(1)

re.compile(pattern[, flags])

用於生成正則表達式對象,供 match() 和 search() 這兩個函數使用。

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

從起始位置開始匹配,匹配不成功返回None

import re

pattern = re.compile('cat')

print(re.match(pattern,'cat'))

print(re.match(pattern,'dog'))

第一個字符串匹配成功,第二個字符串匹配失敗

<_sre.SRE_Match object; span=(0, 3), match='cat'>
None

上面的例子是正則表達式最簡單的應用,實際應用過程常用的元字符如下圖所示:

在這裏插入圖片描述

匹配單個字符使用「 . 」

import re

pattern = re.compile('c.t')

print(re.match(pattern,'cat'))


print(re.match(pattern,'c9t'))

print(re.match(pattern,'c>t'))

print(re.match(pattern,'caat'))

"*"前面的字符出現0次到多次

<_sre.SRE_Match object; span=(0, 3), match='cat'>
<_sre.SRE_Match object; span=(0, 3), match='c9t'>
<_sre.SRE_Match object; span=(0, 3), match='c>t'>
None
import re

pattern = re.compile("ca*t")

print(re.match(pattern, 'cat'))

print(re.match(pattern, 'ct'))

print(re.match(pattern, 'caaaaaaat'))

print(re.match(pattern, 'ca7'))
<_sre.SRE_Match object; span=(0, 3), match='cat'>
<_sre.SRE_Match object; span=(0, 2), match='ct'>
<_sre.SRE_Match object; span=(0, 9), match='caaaaaaat'>
None

"+"前面的字符出現1次到多次

import re

pattern = re.compile("ca+t")

print(re.match(pattern, 'cat'))

print(re.match(pattern, 'ct'))

print(re.match(pattern, 'caaaaaaat'))

print(re.match(pattern, 'ca7'))
<_sre.SRE_Match object; span=(0, 3), match='cat'>
None
<_sre.SRE_Match object; span=(0, 9), match='caaaaaaat'>
None

「?」前面的字符出現1次或者0次

import re

pattern = re.compile("ca?t")

print(re.match(pattern, 'cat'))

print(re.match(pattern, 'ct'))

print(re.match(pattern, 'caaaaaaat'))
<_sre.SRE_Match object; span=(0, 3), match='cat'>
<_sre.SRE_Match object; span=(0, 2), match='ct'>
None

{m}前面的字符出現m次

import re

pattern = re.compile("ca{5}t")

print(re.match(pattern, 'cat'))

print(re.match(pattern, 'caaaaat'))

print(re.match(pattern, 'caaaaaaaaaaaaaaaaat'))
None
<_sre.SRE_Match object; span=(0, 7), match='caaaaat'>
None

{m,n}前面的字符出現m到n次

import re

pattern = re.compile("ca{3,5}t")

print(re.match(pattern, 'cat'))
print(re.match(pattern, 'caaat'))
print(re.match(pattern, 'caaaat'))
print(re.match(pattern, 'caaaaat'))
print(re.match(pattern, 'caaaaaaaaaaaaaaaaat'))
None
<_sre.SRE_Match object; span=(0, 5), match='caaat'>
<_sre.SRE_Match object; span=(0, 6), match='caaaat'>
<_sre.SRE_Match object; span=(0, 7), match='caaaaat'>
None

[] 匹配類型和範圍

import re

pattern = re.compile("c[a-z]t")

print(re.match(pattern, 'c9t'))
print(re.match(pattern, 'cbt'))
print(re.match(pattern, 'cct'))
print(re.match(pattern, 'czt'))
print(re.match(pattern, 'cAt'))
None
<_sre.SRE_Match object; span=(0, 3), match='cbt'>
<_sre.SRE_Match object; span=(0, 3), match='cct'>
<_sre.SRE_Match object; span=(0, 3), match='czt'>
None

轉義字符\d

import re

pattern = re.compile("c\dt")

print(re.match(pattern, 'c9t'))
print(re.match(pattern, 'cbt'))
print(re.match(pattern, 'c88t'))
print(re.match(pattern, 'czt'))
print(re.match(pattern, 'c7t'))
<_sre.SRE_Match object; span=(0, 3), match='c9t'>
None
None
None
<_sre.SRE_Match object; span=(0, 3), match='c7t'>

轉義字符\D

import re

pattern = re.compile("c\Dt")

print(re.match(pattern, 'c9t'))
print(re.match(pattern, 'cbt'))
print(re.match(pattern, 'c88t'))
print(re.match(pattern, 'czt'))
print(re.match(pattern, 'c7t'))
None
<_sre.SRE_Match object; span=(0, 3), match='cbt'>
None
<_sre.SRE_Match object; span=(0, 3), match='czt'>
None