python學習 正規表示式總結

2021-09-02 23:26:39 字數 4820 閱讀 2679

正規表示式是對**字串**操作的一種**邏輯公式**,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成乙個「規則字串」,這個「規則字串」用來表達對字串的一種邏輯過濾(模糊匹配)。
import re  #正規表示式模組

string='jy2018/4/30jy'

re_srt=re.match('^jy',string).group() #是否以jy開始

print(re_srt)

import re  #正規表示式模組

string='jy2018/4/30jy'

re_srt=re.findall('jy$',string) #是否以jy結尾

print(re_srt)

match:match 嘗試從字串的起始位置匹配乙個模式,如果不是起始位置匹配成功的話,match()就返回none。用group(num=0)或groups()來獲取匹配的結果

findall:返回string中所有與pattern相匹配的全部字串,返回形式為陣列。

import re  #正規表示式模組

string='jy\t\n2018/4/30jy'

re_srt=re.findall(r'...',string)

print(re_srt)

#結果['jy\t', '201', '8/4', '/30']

import re  #正規表示式模組

string='jy\t\n2018/4/30jy'

re_srt1=re.findall('.',string)

re_srt2=re.findall('.*',string)

re_srt3=re.findall('...',string)

re_srt4=re.findall('...*',string)

print(re_srt1)

print(re_srt2)

print(re_srt3)

print(re_srt4)

#結果['j', 'y', '\t', '2', '0', '1', '8', '/', '4', '/', '3', '0', 'j', 'y']

['jy\t', '', '2018/4/30jy', ''] #有空格

['jy\t', '201', '8/4', '/30']

['jy\t', '2018/4/30jy']

import re  #正規表示式模組

string='jy\t\n2018/4/30jy'

re_srt1=re.findall('.',string)

re_srt2=re.findall('.+',string)

re_srt3=re.findall('...',string)

re_srt4=re.findall('...+',string)

print(re_srt1)

print(re_srt2)

print(re_srt3)

print(re_srt4)

#結果['j', 'y', '\t', '2', '0', '1', '8', '/', '4', '/', '3', '0', 'j', 'y']

['jy\t', '2018/4/30jy'] #沒有空值

['jy\t', '201', '8/4', '/30']

['jy\t', '2018/4/30jy']

import re  #正規表示式模組

string='jy\t\n2018/4/30jyefw、///\t\n\gsg'

re_srt1=re.findall(r'.',string)

re_srt2=re.findall(r'.*',string)

re_srt3=re.findall(r'.+',string)

re_srt4=re.findall(r'.+?',string)

print(re_srt1)

print(re_srt2)

print(re_srt3)

print(re_srt4)

#結果['j', 'y', '\t', '2', '0', '1', '8', '/', '4', '/', '3', '0', 'j', 'y', 'e', 'f', 'w', '、', '/', '/', '/', '\t', '\\', 'g', 's', 'g']

['jy\t', '', '2018/4/30jyefw、///\t', '', '\\gsg', '']

['jy\t', '2018/4/30jyefw、///\t', '\\gsg']

['j', 'y', '\t', '2', '0', '1', '8', '/', '4', '/', '3', '0', 'j', 'y', 'e', 'f', 'w', '、', '/', '/', '/', '\t', '\\', 'g', 's', 'g']

import re  #正規表示式模組

string='jy\t\n2018/4/30jyefw、///\t\n\gsg'

re_srt1=re.findall('jy|2018',string)

print(re_srt1)

#結果['jy', '2018', 'jy']

import re  #正規表示式模組

string='jy\t\n2018/4/30jyefw、///\t\n\gsg'

re_srt1=re.findall('\d+',string) #是數字且數字出現大於等於一次就拿出來(貪婪匹配,從前往後)

print(re_srt1)

#結果['2018', '4', '30']

import re  #正規表示式模組

string='jy\t\n2018/4/30jyefw、///\t\n\gsg'

re_srt1=re.findall('\s+',string)

print(re_srt1)

#結果['\t\n', '\t\n']

import re  #正規表示式模組

string='jy\t\n2018/4/30jyefw、///\t\n\gsg'

re_srt1=re.findall('\w',string)

print(re_srt1)

#結果['j', 'y', '2', '0', '1', '8', '4', '3', '0', 'j', 'y', 'e', 'f', 'w', 'g', 's', 'g']

import re  #正規表示式模組

string='jy\t\n2018/4/30jy2018efw、///\t\n\gsg2018'

re_srt1=re.findall('.*y(2018).*?',string)

print(re_srt1)

#結果['2018']

import re  #正規表示式模組

string='jy\t\n2018/4/30jy2018efw、///\t\n\gsg2018'

re_srt1=re.findall('[a-z0-9]',string) #等同於\w,中間不能寫逗號

print(re_srt1)

#結果['j', 'y', '2', '0', '1', '8', '4', '3', '0', 'j', 'y', '2', '0', '1', '8', 'e', 'f', 'w', 'g', 's', 'g', '2', '0', '1', '8']

import re  #正規表示式模組

string ='jy\t\n2018/4/30jy2018efw、///\t\n\gsg2018'

re_srt1 = re.findall('[^0-9]', string)

print(re_srt1)

#結果['j', 'y', '\t', '\n', '/', '/', 'j', 'y', 'e', 'f', 'w', '、', '/', '/', '/', '\t', '\n', '\\', 'g', 's', 'g']

import re  #正規表示式模組

string ='jy\t\n2018/\t4/30jy2018efw\t\ngsg2018'

re_srt1 = re.findall('.', string)

re_srt2 = re.findall('.', string) #最少出現4次,最多出現8次

print(re_srt1)

print(re_srt2)

#結果['2018', '/\t4/', '30jy', '2018', 'efw\t', 'gsg2']

['2018/\t4/', '30jy2018', 'efw\t', 'gsg2018']

a='xiaoming出生2023年5月21號'

b='xiaoming出生1990-07-02'

re_str=r'生(\d[年-]\d[月-]\d).*?'

string1=re.findall(re_str,a)

string2=re.findall(re_str,b)

print(string1)

print(string2)

#結果['2023年5月21']

['1990-07-02']

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

Python正規表示式總結

匹配除換行符意外的任意字元 abc 字元集合,一次只能匹配乙個字元,匹配a b c abc 字元集合,不是a b c a z 小寫字元 a z 不是小寫 b 單詞邊界 b 不匹配單詞邊界 d 0 9 匹配1個數字 d 0 9 不匹配1個數字 s 匹配乙個空白字元.包括製表符 換行符 空格 s 非空白...

Python正規表示式總結

基礎匹配 d 可以匹配乙個數字,00 d 可以匹配 007 w 可以匹配乙個字母或者數字,00 w 可以匹配 007 或者 00a s 可以匹配乙個空格 可以匹配任意字元 匹配變長的字元,可以用 表示任意個字元 包括0個 用 表示至少乙個字元,用?表示0個或者1個字元,用表示n個字元,用表示n m個...