原子:正則表達式中最基本的組成單位,每個正則表達式中至少包含一個原子,原子有以下幾類
(1)普通字符作爲原子
(2)非打印字符作爲原子
(3)通用字符作爲原子
(4)原子表
(1)普通字符作爲原子
import re
pattern = "yue"
string = "http://yum.iqianyue.com"
result = re.search(pattern, string)
print("普通字符作爲原子結果:%s"%result)
# 普通字符作爲原子結果:<_sre.SRE_Match object; span=(16, 19), match='yue'>
(2)非打印字符作爲原子
非打印字符指的事一些字符串中用於格式控制的符號,比如換行符
\n 匹配一個換行符 \t匹配一個製表符
import re
pattern = "\n"
string = """http://www.baidu.com
http://yum.iqianyue.com"""
result = re.search(pattern, string)
print("非打印字符作爲原子結果:%s"%result)
# 非打印字符作爲原子結果:<_sre.SRE_Match object; span=(20, 21), match='\n'>
(3)通用字符作爲原子
一個原子可以匹配一類字符
字母 | 意義 |
---|---|
/w | 匹配任意一個字母、數字或者下劃線 |
/W | 匹配除字母、數字和下劃線意外的任意一個字符 |
/d | 匹配仍以一個十進制數 |
/D | 匹配除十進制數意外的任意一個其他字符 |
/s | 匹配任意一個空白字符 |
/S | 匹配除空白字符意外的任意一個其他字符 |
例子:’\w\dpython\w’對 ‘python’字符進行匹配,字符最後一個是字母、數字或下劃線,字符前一位是任意的十進制數,再前一位置是一個字母數字或下劃線的格式字符串,如’67python8’,’u2python_’
import re
pattern = "\w\dpython\w"
string = "abcdfphp345python_py"
result = re.search(pattern, string)
print("通用字符作爲原子結果:%s"%result)
# 通用字符作爲原子結果:<_sre.SRE_Match object; span=(9, 18), match='45python_'>
(4)原子表
定義一組地位平等的原子,然後匹配的時候會取該原子表中的任意一個原子進行匹配。
在Python中,原子表由[]表示,比如[xyz],就是一個原子表,這個原子表中定義了3個原子,這3個原子的地位平等。
例子:
(1)定義了表達式’[xyz]py’,對應的源字符串是’xpython’,如果此時使用re.search()函數進行匹配,就可以匹配出結果’xpy’,因此只要py前一位是xyz字母中的其中一個字母就可以匹配成功。
(2)類似的[^]代表的事除了中括號裏面的原子均可以匹配,比如’[^xyz]py’能匹配’apy’,但不能匹配’xpy’
import re
pattern1 = "\w\dpython[xyz]\w"
pattern2 = "\w\dpython[^xyz]\w"
pattern3 = "\w\dpython[xyz]\W"
string = "abcdfphp345pythony_py"
result1 = re.search(pattern1, string)
result2 = re.search(pattern2, string)
result3 = re.search(pattern3, string)
print("結果1:%s"%result1) # 結果1:45pythony_
print("結果2:%s"%result2) # 結果2:None 沒有匹配成功所以都爲none
print("結果3:%s"%result3) # 結果3:None