06Python爬蟲---正則表達式01之原子

原子:正則表達式中最基本的組成單位,每個正則表達式中至少包含一個原子,原子有以下幾類

(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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章