最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python正則表達中re模塊的使用

 更新時間:2022年09月07日 09:43:57   作者:過期的秋刀魚-_  
這篇文章主要介紹了Python正則表達中re模塊的使用,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下

01、正則表達式

學(xué)習(xí)正則表達式操作字符串,re模塊是用C語言寫的沒匹配速度非常快,其中compile函數(shù)根據(jù)一個模式字符串和可選的標(biāo)志參數(shù)生成一個正則表達式對象,該對象擁有一系列方法用于正則表大會匹配和替換,re模塊也提供了與這下方法功能完全一致的函數(shù),這些函數(shù)適用一個模式字符串做為他們的第一個參數(shù)

re.macth方法:re.math 嘗試從字符串起始位置匹配,返回match對象,,否則返回None,適用group()獲取匹配成功的字符串

語法:re.match(pattern,string,flags)

參數(shù)描述pattern匹配的正則表達式string要匹配的字符串flags標(biāo)志位,用于控制正則表達式的匹配方式:如:是否匹配大小寫,多行匹配

參數(shù)描述
pattern匹配的正則表達式
string要匹配的字符串
flags標(biāo)志位,用于控制正則表達式的匹配方式:如:是否匹配大小寫,多行匹配
import re 
str='Python is the best language in the world'
result= re.match('P',str)
print(type(result))#<class 're.Match'>
print(result.group())

標(biāo)志位:如果使用多個標(biāo)志位,使用|分割,如:re.I|re.M

修飾符描述
re.I適匹配對大小寫不敏感
re.L做本地化識別匹配
re.M多行匹配,影響^ 和$
re.S使.匹配包括換行在內(nèi)的所有字符
re.U根據(jù)Unicode字符集解析字符,這個標(biāo)志影響\w,\W ,\b,\B
re.X該標(biāo)識符通過給予你更靈活的格式以便于你將正則表達式寫得更易于理解。
import re 
strData='Python is the best language in the world\
gslfjgldsjgls'
#result= re.match('p',strData,re.I|re.M)#第三個參數(shù) 忽略大小寫
#print(type(result))#<class 're.Match'>
#print(result.group())
res=re.match('(.*?)is(.*?)',strData,re.I)
print(res.group(1))
print(res.group(2))

常用匹配規(guī)則:

符號匹配規(guī)則
.(點)匹配任意1個字符除了換行符
[abc]匹配abc中任意一個
\d匹配一個數(shù)字0-9
\D匹配非數(shù)字
\s匹配空白 即空格 tab鍵
\S匹配非空格
\w匹配單詞字符 即a-z A-Z 0-9 _
\W匹配非單詞字符

匹配字符數(shù)量:

符號匹配規(guī)則
*匹配前一個字符出現(xiàn)0次或者無限次,即可有可無
+匹配前一個字符出現(xiàn)1次或者無限次,即至少有1次
?匹配前一個字符出現(xiàn)1次或者0次,即要么有1次要么沒有
{m}匹配前一個字符出現(xiàn)m次
{m,}匹配前一個字符至少出現(xiàn)m次
{m,n}匹配前一個字符出現(xiàn)從m次到n次

1.1、限定匹配數(shù)量規(guī)則

import re
# * 匹配前一個字符出現(xiàn)0次或者無限次
res=re.match('[a-z][a-z]*','MyPython',re.I)
print(res.group())

# + 匹配前一個字符1次或者無限次  至少一次
res=re.match('[a-zA-Z]+[\w]*','mynAMEDCeisz848s_')
print(res.group())

# ? 匹配前一個字符0次或者1次
res=re.match('[a-zA-Z]+[\d]?','mkohjhjgu8jg8')
print(res.group())

# {min,max} 匹配前一個從min到max次   min max必須是非負整數(shù)
#{count}精確匹配次數(shù)   {count,}沒有限制
res=re.match('\d{4,}','46145')
if res:
    print('匹配成功{}'.format(res.group()))

#匹配郵箱  格式:xxxxxx@163.com
res=re.match('[a-zA-Z0-9]{6,11}@163.com','318129549@163.com')
print(res.group())

1.2、原生字符串

# path="D:\\1_zhao_File\\1_MarkDown\MarkDown學(xué)習(xí)使用篇"
# print(path )
import re


#原生字符串  r
print(re.match(r'c:\\a.text','c:\\a.text').group())


#匹配開頭結(jié)尾
#^ 匹配字符串開頭
#$ 匹配字符串結(jié)尾
# res=re.match('^p.*','python is language')
res=re.match('^p[\w]{5}','python is language')
print(res.group())
res=re.match('[\w]{5,15}@[\w]{2,5}.com$','318129549@qq.com')
print(res.group())

1.3、分組匹配

#  | 匹配左右任意一個表達式  從左往右
import  re

res=re.match('[\w]*|100','100')
print(res.group())

 # (ab)分組匹配  將括號中字符作為一個分組
res=re.match('([0-9]*)-(\d*)','123456-464651561')
print(res.group())
print(res.group(1))
print(res.group(2))

# \num 的使用
# htmlTag='<html><h1>Python核心編程</h1></html>'
# res1=re.match(r'<(.+)>(.+)>(.+)</\2></\1>',htmlTag)
# print(res1.group(1))


#  分組 別名的使用 (?P<名字>)
data='<div><h1>www.baidu.com</h1></div>'
res=re.match(r'<(?P<div>\w*)><(?P<h1>\w*)>(?P<data>.*)</\w*></\w*>',data)

print(res.group())

1.4、編譯函數(shù)compile

# re.compile 方法
'''
compile將正則表達式模式編譯成一個正則表達式對象
reg=re.compile(pattern)
result=reg.match(string)
等效于result=re.match(pattern,string)
使用re.compile和保持所產(chǎn)生的正則表達式對象重用效率更高
'''
import re

#compile 可以把字符串編譯成字節(jié)碼
#優(yōu)點:在使用正則表達式進行match時,python會將字符串轉(zhuǎn)為正則表達式對象
# 而如果使用compile,只需要轉(zhuǎn)換一次即可,以后在使用模式對象的話無需重復(fù)轉(zhuǎn)換

data='1364'
pattern=re.compile('.*')
#使用pattern對象
res=pattern.match(data)
print(res.group())


#re.search方法
#search在全文中匹配一次,匹配到就返回
data='我愛我偉大的祖國,I love China,China is a great country'
rees=re.search('China',data)
print(rees)
print(rees.span())
print(rees.group())
# print(data[21])

#re.findall方法 匹配所有,返回一個列表,

data='華為牛逼是華人的驕傲'
# res =re.findall('華.',data)
# print(res)
pattern=re.compile('華.')
res=pattern.findall(data)
print(res)


# re.sub方法 實現(xiàn)目標(biāo)搜索和替換
data1='Pythons是很受歡迎的編程語言'
pattern='[a-zA-Z]+' #字符集范圍  +代表 前導(dǎo)字符模式出現(xiàn)1從以上
res=re.sub(pattern,'C#',data1)
resn=re.subn(pattern,'C#',data1)
print(res)
print(resn)
#re.subn 完成目標(biāo)的的搜索和替換 還返回被替換的數(shù)量,以元組的形式返回

#re.split  是新分割字符串
data='百度,騰訊,阿里,華為,360,字節(jié)跳動'
print(re.split(',',data))

1.5貪婪模式和非貪婪模式

'''
python 中默認是貪婪的,總是貪婪的匹配盡可能多的字符,非貪婪相反,總是嘗試匹配盡可能少的字符
在  ” * ? + {m,n}"后面加上 ? 使貪婪變成非貪婪

'''
#貪婪
import  re
res=re.match('[\d]{6,9}','111222333')
print(res.group())
#非貪婪
res=re.match('[\d]{6,9}?','111222333')
print(res.group())
content='asdfbsdbdsabsd'
# pattern=re.compile('a.*b')# 貪婪
pattern=re.compile('a.*?b')#非貪婪
res=pattern.search(content)
print(res.group())
#0710-49

到此這篇關(guān)于Python正則表達中re模塊的使用的文章就介紹到這了,更多相關(guān)Python re模塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Django3中的自定義用戶模型實例詳解

    Django3中的自定義用戶模型實例詳解

    這篇文章主要給大家介紹了關(guān)于Django3中自定義用戶模型的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Python大數(shù)據(jù)之網(wǎng)絡(luò)爬蟲的post請求、get請求區(qū)別實例分析

    Python大數(shù)據(jù)之網(wǎng)絡(luò)爬蟲的post請求、get請求區(qū)別實例分析

    這篇文章主要介紹了Python大數(shù)據(jù)之網(wǎng)絡(luò)爬蟲的post請求、get請求區(qū)別,結(jié)合具體實例形式分析了Python網(wǎng)頁爬蟲post請求與get請求相關(guān)使用技巧,需要的朋友可以參考下
    2019-11-11
  • Python自定義模塊的創(chuàng)建與使用

    Python自定義模塊的創(chuàng)建與使用

    這篇文章主要給大家介紹了關(guān)于Python自定義模塊創(chuàng)建與使用的相關(guān)資料,文中還給大家分享了python打包用戶自定義模塊的方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • Python中Matplotlib的點、線形狀、顏色以及繪制散點圖

    Python中Matplotlib的點、線形狀、顏色以及繪制散點圖

    與線型圖類似的是,散點圖也是一個個點集構(gòu)成的,下面這篇文章主要給大家介紹了關(guān)于Python中Matplotlib的點、線形狀、顏色以及繪制散點圖的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-04-04
  • Python自動化運維和部署項目工具Fabric使用實例

    Python自動化運維和部署項目工具Fabric使用實例

    Fabric是一個Python庫,只要目標(biāo)機器支持ssh訪問,就可以借助fabric來進行遠程操作(如在host1上對host2遠程運行shell命令),顯然,由于fabric是個Python package,故其它Python package都可以被import到fabric特有的fabfile.py腳本中
    2016-09-09
  • 基于Python繪制3D立體愛心圖案的示例詳解

    基于Python繪制3D立體愛心圖案的示例詳解

    這篇文章主要為大家詳細介紹了利用Python實現(xiàn)繪制3D立體愛心圖案的四種不同方法,文中的示例代碼講解詳細,感興趣的小伙伴可以動手嘗試一下
    2022-11-11
  • python中的整除向下取整的操作方法

    python中的整除向下取整的操作方法

    Python中的//是整數(shù)除法運算符,用于執(zhí)行向下取整的除法,返回商的整數(shù)部分,不會四舍五入,它在分治法、索引計算和整數(shù)運算中非常有用,本文給大家介紹python中的整除向下取整的操作方法,感興趣的朋友一起看看吧
    2025-03-03
  • wxPython窗體拆分布局基礎(chǔ)組件

    wxPython窗體拆分布局基礎(chǔ)組件

    這篇文章主要為大家詳細介紹了wxPython窗體拆分布局基礎(chǔ)組件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Yolov5更換BiFPN的詳細步驟總結(jié)

    Yolov5更換BiFPN的詳細步驟總結(jié)

    將YOLOv5中的PANet層修改為EfficientDet-BiFPN,實現(xiàn)自上而下與自下而上的深淺層特征雙向融合,明顯提升YOLOv5算法檢測精度,下面這篇文章主要給大家介紹了關(guān)于Yolov5更換BiFPN的詳細步驟,需要的朋友可以參考下
    2022-12-12
  • python雙向鏈表原理與實現(xiàn)方法詳解

    python雙向鏈表原理與實現(xiàn)方法詳解

    這篇文章主要介紹了python雙向鏈表原理與實現(xiàn)方法,結(jié)合實例形式分析了Python雙向鏈表的定義、以及節(jié)點的判斷、遍歷、添加、刪除等相關(guān)操作技巧,需要的朋友可以參考下
    2019-12-12

最新評論

乌拉特后旗| 玉田县| 涿鹿县| 东阳市| 云阳县| 黎川县| 蓬溪县| 凤庆县| 镇安县| 巴塘县| 磐石市| 喀喇| 奎屯市| 洛阳市| 千阳县| 泸州市| 三门县| 米脂县| 临西县| 繁昌县| 读书| 贞丰县| 兴隆县| 临汾市| 如东县| 横峰县| 明水县| 东至县| 如皋市| 巴彦县| 汪清县| 灵台县| 泽州县| 禄丰县| 垫江县| 密山市| 五指山市| 璧山县| 贡嘎县| 会昌县| 棋牌|