Python之正則表達式

學習網站:http://www.runoob.com/python/python-reg-expressions.html

正則表達式

  • 一套規則,可以在字符串文本中進行搜查替換等
  • 案例1,re的基本使用流程
  • 案例2,match的基本使用
  • 正則常用方法:
    • match: 從開始位置開始查找,一次匹配,找到一個就結束
    • search:從任何位置查找,一次匹配, 案例3
    • findall: 全部匹配,返回列表, 案例4
    • finditer: 全部匹配,返回迭代器, 案例4
    • split: 分割字符串,返回列表
    • sub:替換
  • 匹配中文
    • 中文unicode範圍主要在[u4e00-u9fa5]
    • 案例5
  • 貪婪與非貪婪模式
    • 貪婪模式: 在整個表達式匹配成功的前提下,儘可能多的匹配
    • 非貪婪模式: xxxxxxxxxxxxxxxxxxxxxx, 儘可能少的匹配
    • python裏面數量詞默認是貪婪模式
    • 例如:
      • 查找文本abbbbbbccc
      • re是 ab*
      • 貪婪模式: 結果是abbbbbb
      • 非貪婪: 結果是a 

案例1: 

'''
python中正則模塊是re
使用大致步驟:
1. compile函數講正則表達式的字符串便以爲一個Pattern對象
2. 通過Pattern對象的一些列方法對文本進行匹配,匹配結果是一個Match對象
3. 用Match對象的方法,對結果進行操縱
'''
import re

# \d表示以數字
# 後面+號表示這個數字可以出現一次或者多次
s = r"\d+" # r表示後面是原生字符串,後面不需要轉義

# 返回Pattern對象
pattern = re.compile(s)

# 返回一個Match對象
# 默認找到一個匹配就返回
m = pattern.match("one12two2three3")

print(type(m))
# 默認匹配從頭部開始,所以此次結果爲None
print(m)

# 返回一個Match對象
# 後面爲位置參數含義是從哪個位置開始查找,找到哪個位置結束
m = pattern.match("one12two2three3", 3, 10)

print(type(m))
# 默認匹配從頭部開始,所以此次結果爲None
print(m)

print(m.group())

print(m.start(0))
print(m.end(0))
print(m.span(0))

案例2: 

'''
正則結果Match的使用案例
'''

import re

# 以下正則分成了兩個組,以小括號爲單位
s = r'([a-z]+) ([a-z]+)'
pattern = re.compile(s, re.I) # s.I表示忽略大小寫

m = pattern.match("Hello world wide web")

# goup(0)表示返回匹配成功的整個子串
s = m.group(0)
print(s)

a = m.span(0) # 返回匹配成功的 整個子串的跨度
print(a)

# gourp(1)表示返回的第一個分組匹配成功的子串
s = m.group(1)
print(s)

a = m.span(1) # 返回匹配成功的第一個子串的跨度
print(a)

s = m.groups() #等價於m.gourp(1), m.group(2).......
print(s)

案例3: 

'''
search
'''
import re

s = r'\d+'

pattern = re.compile(s)

m = pattern.search("one12two34three56")
print(m.group())

# 參數表明搜查的起始範圍,結束爲止可以大於串的長度
m = pattern.search("one12two34three56", 10, 40)
print(m.group())

案例4: 

'''
findall案例
'''
import re

pattern = re.compile(r'\d+')

s = pattern.findall("i am 18 years odl and 185 high")

print(s)

s = pattern.finditer("i am 18 years odl and 185 high")

print(type(s))

for i in s:
    print(i.group())

案例5: 

'''
中文unicode案例
'''

import re

hello = u'你好,世界'

pattern = re.compile(r'[\u4e00-\u9fa5]+')

m = pattern.findall(hello)
print(m)

 

 

 

 

 

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