1. 程式人生 > >re庫、正則表達式基本使用

re庫、正則表達式基本使用

tro 表示 color blog mage sea match 正則表達式 strong

re庫是python的標準庫,主要用於字符串匹配。
Re庫主要功能函數

技術分享圖片

re.search()函數

技術分享圖片

技術分享圖片

re.match()函數

技術分享圖片

正則表達式

1.特殊字符

  • ^h表示以h開頭,.表示任意字符,*表示任意多次
import re
line = hello 123
# ^h表示以h開頭,.表示任意字符,*表示任意多次
re_str = ^h.*
if re.match(re_str, line):
    print(匹配成功)  # 輸出:匹配成功 
  • $表示結尾字符
import re
line = hello 123
re_str = .*3$ # 前面可為任意多個任意字符,但結尾必須是3
if re.match(re_str, line): print(匹配成功) # 輸出:匹配成功
  • ?表示非貪婪模式
import re
line = heeeello123
re_str = .*?(h.*?l).*  # 只要()中的子串
match_obj = re.match(re_str, line)
if match_obj:
    print(match_obj.group(1)) # 輸出:heeeel
                              # 如果去掉?,則輸出:heeeell
  • +表示至少出現一次
import re
line 
= heeeello123 re_str = .*(h.+?l).* match_obj = re.match(re_str, line) if match_obj: print(match_obj.group(1)) #輸出:heeeel
  • {2}表示前面字符出現2次
import re
line = heeeello123
re_str = .*?(e.{2}?l).* # 匹配的是e+任意2個字符+l
match_obj = re.match(re_str, line)
if match_obj:
    print(match_obj.group(1)) #
輸出:eeel
  • | 表示或
import re
line = hello123
re_str = ((hello|heeello)123)
match_obj = re.match(re_str, line)
if match_obj:
    print(match_obj.group(1)) # 輸出:python123
  • []表示對單個字符給出取值範圍
import re
line = hello123
re_str = "([jhk]ello123)"  # [jhk]表示jhk中的任一個都可以
match_obj = re.match(re_str, line)
if match_obj:
    print(match_obj.group(1)) # 輸出:hello123
  • [^]表示非字符集
import re
line = hello123
re_str = "([^j]ello123)" # [^j]表示不是j的都行
match_obj = re.match(re_str, line)
if match_obj:
    print(match_obj.group(1)) # 輸出:hello123
  • \s表示空格 \S表示非空格
import re
line = hello123 好 #字符串有空格
re_str = "(hello123\s好)"  # 匹配上空格
match_obj = re.match(re_str, line)
if match_obj:
    print(match_obj.group(1)) #輸出:hello123 好
  • [\u4E00-\u9FA5]表示漢字
import re
line = hello 北京大學
re_str = ".*?([\u4E00-\u9FA5]+大學)"
match_obj = re.match(re_str, line)
if match_obj:
    print(match_obj.group(1)) # 輸出:北京大學

小例子 提取出生日期

import re
line = xxx出生於2000年6月1日
line = xxx出生於2000/6/1
line = xxx出生於2000-6-1
line = xxx出生於2000-06-01
line = xxx出生於2000-06
re_str = ".*出生於(\d{4}[年/-]\d{1,2}([月/-]|\d{1,2}|$))"
match_obj = re.match(re_str, line)
if match_obj:
    print(match_obj.group(1))

re庫、正則表達式基本使用