Python3的re模組的使用

2021-09-12 16:21:30 字數 3300 閱讀 1345

import re

# 2元字元 . ^ $ * + ? [ ] | ( ) \

# 作用:匹配字串

s = 'hello world'

# 返回開始位置 下標

print(s.find('llo'))

# 找到 並替換

print(s.replace('ll', 'xx'))

# . 代指一位字元,代指所有字元 除了換行符 \n

ci = re.findall('w\wl', 'hello world')

print(ci)

# ^ 只會在開始時進行匹配

ci = re.findall('^h..l', 'hello world')

print(ci)

# $ 只會在最後時進行匹配

ci = re.findall('o..d$', 'hello world')

print(ci)

# * 重複匹配 從h開始到o(最後乙個)中間可以任意字元

ci = re.findall('h.*o', 'hello world')

print(ci)

# + 至少需要乙個 只對前面第乙個字元有作用

ci = re.findall('a+b', 'aaaaabcccdddabbbbb')

print(ci)

# ? 只能取0或1次 只對前面第乙個字元有作用 出現a 0次或1次

ci = re.findall('a?b', 'abcdbb,acb,addb')

print(ci)

# 出現n次 只對前面第乙個字元有作用

ci = re.findall('ab', 'abcdbb,acb,aabddb')

print(ci)

# +等價於 也等價於

# * 等價於 ? 等價於

# 出現m到n次 只對前面第乙個字元有作用

ci = re.findall('ab', 'abcdbb,acb,aabddb')

print(ci)

# x[m,n]y 字符集 或的關係 xmy或 xny

ci = re.findall('a[c,d]b', 'abcdbb,acb,aabddb')

print(ci)

# 取消元字元的特殊功能 (三個例外:\,^,-)

ci = re.findall('[w,,,*]', 'abwdbb,,acb,aa*ddb')

print(ci)

ci = re.findall('[1-9,a-z,a-z]', '12asas')

print(ci)

# [^] 就變成了 取反操作

ci = re.findall('[^(a-z)]', '12aimsas')

print(ci)

# ^ 是取 內的所有非

ci = re.findall('[^12,3,4]', '1234567891')

print(ci)

# \ 反斜槓

# \ 1.反斜槓後邊跟元字元去除特殊功能 2.反斜槓後邊跟普通字元實現特殊功能

# \w 匹配 數字 字母 下劃線

# \w 匹配 非數字 非字母 非下劃線

# \s 匹配 任意空白字元,等價於 [\t\n\r\f]。

# \s 匹配 任意非空字元

# \d 匹配 任意數字,等價於 [0-9]。

# \d 匹配 任意非數字

# \b 匹配乙個單詞邊界,也就是指單詞和空格間的位置。

ci = re.findall('\w', '19 az__')

print(ci)

ci = re.findall('\w', '19 az__')

print(ci)

ci = re.findall('\s', '19 az__')

print(ci)

ci = re.findall('\s', '19 az__')

print(ci)

ci = re.findall('\d', '19 az__')

print(ci)

ci = re.findall('\d', '19 az__')

print(ci)

ci = re.findall(r'er\b', '19 er az__over ')

print(ci)

# 符合的第乙個結果

print(re.search('as', 'hgahashjjas'))

# 想要匹配 \ 沒找到 加r 表示匹配原生字元 不進行轉義

print(re.findall(r'\\', 'adhfd\c'))

print(re.findall(r'\\', 'adhfd\c'))

# | 是或的意思 會先取第乙個匹配結果

print(re.search('(as)+', 'adsdasas').group())

print(re.search('(as)|3', 'as3').group())

# ?p固定格式 給分組起乙個名字 為name 規則為:\d

name = re.search('(?p\d)', 'wwwwddash34ttt123/ooo')

print(name.group('id'))

# 連續分成兩個組 分別起名 匹配規則內的 / 也是匹配規則

name = re.search('(?p\d)/(?p\w)', 'wwwwddash34ttt123/abc')

print(name.group())

print(name.group('num'))

print(name.group('letter'))

# 正規表示式的方法

# 1. findall():所有結果都返回到乙個列表裡

# 2. search():返回乙個物件(object),物件可以呼叫group()返回結果

# 3. match():只在字串開始匹配,也返回匹配到的第乙個物件,物件可以呼叫group()

# 4. split() 如果在邊緣 則會有空字元

print(re.split('k', 'ashdjakah'))

print(re.split('[h,k]', 'ashdjakah'))

# 5. sub() 替換函式,使用方式參看下面

print(re.sub('j..', 's..b', 'hello joe world'))

# 6. compile() # 記為乙個正規表示式 下次可以直接使用

obj = re.compile('\.com')

print(obj.findall('ahfjhj.com'))

要點:

python3 常用模組 RE模組

一.常用正規表示式符號和語法 匹配所有字串,除 n以外 表示範圍 0 9 匹配前面的子表示式零次或多次。要匹配 字元,請使用 匹配前面的子表示式一次或多次。要匹配 字元,請使用 匹配字串開頭 匹配字串結尾 re 轉義字元,使後乙個字元改變原來的意思,如果字串中有字元 需要匹配,可以 或者字符集 re...

python3 常用模組 RE模組

一.常用正規表示式符號和語法 匹配所有字串,除 n以外 表示範圍 0 9 匹配前面的子表示式零次或多次。要匹配 字元,請使用 匹配前面的子表示式一次或多次。要匹配 字元,請使用 匹配字串開頭 匹配字串結尾 re 轉義字元,使後乙個字元改變原來的意思,如果字串中有字元 需要匹配,可以 或者字符集 re...

Python3基礎筆記 re模組

參考部落格 py西遊攻關之模組 就其本質而言,正規表示式 或 re 是一種小型的 高度專業化的程式語言,在python中 它內嵌在python中,並通過 re 模組實現。正規表示式模式被編譯成一系列的位元組碼,然後由用 c 編寫的匹配引擎執行。importre 萬用字元,乙個 模糊匹配乙個除換行符之...