电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Python中正則表達(dá)式對單個(gè)字符,多個(gè)字符和匹配邊界等使用

瀏覽:112日期:2022-06-29 08:45:38

Regular Expression,正則表達(dá)式,又稱正規(guī)表示式、正規(guī)表示法、正則表達(dá)式、規(guī)則表達(dá)式、常規(guī)表示法(英語:Regular Expression,在代碼中常簡寫為regex、regexp或RE),是計(jì)算機(jī)科學(xué)的一個(gè)概念。正則表達(dá)式是一個(gè)特殊的字符序列,它能幫助你方便的檢查一個(gè)字符串是否與某種模式匹配。在很多文本編輯器里,正則表達(dá)式通常被用來檢索、替換那些匹配某個(gè)模式的文本。

Python 自1.5版本起增加了re 模塊。re 模塊使 Python 語言擁有全部的正則表達(dá)式功能。

1.re.match函數(shù)

python用re.match函數(shù)從字符串的起始位置匹配一個(gè)模式,若字符串匹配正則表達(dá)式,則match方法返回匹配對象(Match Object),否則返回None(注意不是空字符串'')。匹配對象Macth Object具有g(shù)roup方法,用來返回字符串的匹配部分。

函數(shù)語法:re.match(pattern, string, flags) ;pattern是正則表達(dá)式,string需要匹配的字符串,flags為可選參數(shù)修飾符。

# 導(dǎo)入re模塊,注意match函數(shù)是從起始位置匹配的。如果起始位置匹配失敗,則返回Noneimport re#match()函數(shù)適合匹配是否以xxxx開始的字符串,因?yàn)槠鋸念^開始匹配的ret = re.match('abc','aBCabc',re.I) #可選參數(shù)re.I表示忽略大小寫,后續(xù)詳細(xì)解釋。print(ret.group()) #aBCret1 = re.match('abc','aBCabc')print(ret1.group()) # ’NoneType’ object has no attribute ’group’

正則表達(dá)式可以包含一些可選標(biāo)志修飾符來控制匹配的模式。修飾符被指定為一個(gè)可選的標(biāo)志。多個(gè)標(biāo)志可以通過按位 OR(|) 它們來指定。如 re.I | re.M 被設(shè)置成 I 和 M 標(biāo)志:

修飾符 描述 re.I 使匹配對大小寫不敏感 re.L 做本地化識別(locale-aware)匹配 re.M 多行匹配,影響 ^ 和 $ re.S 使 . 匹配包括換行在內(nèi)的所有字符 re.U 根據(jù)Unicode字符集解析字符。這個(gè)標(biāo)志影響 w, W, b, B. re.X 該標(biāo)志通過給予你更靈活的格式以便你將正則表達(dá)式寫得更易于理解。

2.正則表達(dá)式的語法2.1正則表達(dá)式對字符(單個(gè)字符)的表示

字符 功能 . 匹配任意1個(gè)字符(除了n),注意因?yàn)?表示任意一個(gè)字符,所以如果匹配‘.’則需要用轉(zhuǎn)義字符.來表示 [ ] 匹配[ ]中列舉的字符,如果[a-zA-Z0-9],[a-zA-Z]表示所有字母和數(shù)字,后者表示所有字母,注意中間沒有空格符號。 d 匹配數(shù)字,即0-9 D 匹配非數(shù)字,即不是數(shù)字 s 匹配空白,即 空格,tab鍵 S 匹配非空白 w 匹配單詞字符,即a-z、A-Z、0-9、_ W 匹配非單詞字符

# 導(dǎo)入re模塊import re#1.測試.的使用,匹配任意字符開始的字符串str=’abc’ret =re.match('..',str)print(ret.group()) #ab.用兩個(gè)..就表示只要str字符串開頭是兩個(gè)字符即可。ret1 = re.match('....',str) #這種情況則會報(bào)錯(cuò),因?yàn)閟tr只有三個(gè)字符。 #2.匹配[]范圍內(nèi)的任意一個(gè)字符開頭的字符串str1 = 'abcABC*?//'str2 = '3afasdlfadsf'ret2 = re.match('[a-z]',str1).group() #aret3 = re.match('[123456]',str2).group() #3,[1-6]等價(jià)[123456] #3./d的使用,表示匹配任意一個(gè)數(shù)字str3 = '第5名是我'ret4 = re.match('第d名',str3).group()print(ret4) #第5名 ret4 = re.match('第[0-9]名',str3) #同樣是表示0-9任意一個(gè),[0-9]和d效果一樣print(ret4.group()) #第5名

總結(jié):注意上面對字符的匹配都是表示一個(gè)任意字符,或者某個(gè)范圍內(nèi)的任意一個(gè)字符,屬于單個(gè)字符匹配。而實(shí)際開發(fā)中肯定都是用一個(gè)子串(多個(gè)字符)去匹配整個(gè)字符串。那么如何表示呢,請繼續(xù)下去。

2.2正則表達(dá)式匹配多個(gè)字符:數(shù)量的表示

匹配多個(gè)字符的相關(guān)格式,其實(shí)就是單個(gè)字符加上數(shù)量。注意下面數(shù)量的匹配都是針對前一個(gè)字符。

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

# 導(dǎo)入re模塊import re #1.匹配第一個(gè)是大寫字母,第二個(gè)小寫字母,后面只要是小寫字母即可。ret = re.match('[A-Z][a-z]*','Aafngsdfgnlsdf1224343')print(ret.group()) #Aafngsdfgnlsdfret1 = re.match('[A-Z][a-z]*','AaAaaa34bbb')print(ret1.group()) #Aa ,因?yàn)楹竺娌皇切懽帜杆詻]匹配到。 #匹配下面字符串是否以字母或者下劃線開頭ret = re.match('[a-zA-Z_]+[w_]*','name1') #解釋1:[a-zA-Z_]+字母下劃線至少出現(xiàn)一次print(ret.group()) #name1 ret = re.match('[a-zA-Z_]+[w_]*','_name') #解釋2:[w_]*表示字母,數(shù)據(jù)下劃線出現(xiàn)任意次print(ret.group()) #_name ret = re.match('[a-zA-Z_]+[w_]*','2_name')#print(ret.group()) #報(bào)錯(cuò),因?yàn)槠ヅ洳簧希祷豊one. #3.匹配前面字符出現(xiàn)0次或者1次使用?ret = re.match('[1-9]?[0-9]','7')print(ret.group()) #7 ret = re.match('[1-9]?[0-9]','33')print(ret.group()) #33 ret = re.match('[1-9]?[0-9]','09')print(ret.group()) #0 #4.前面字符出現(xiàn)n此,或者m-n范圍內(nèi)的任意次ret = re.match('[a-zA-Z0-9_]{6}','dsa2A9nfdsf')print(ret.group()) #dsa2A9,匹配前6位是數(shù)字字符下劃線即可 ret = re.match('[a-zA-Z0-9_]{3,8}','aSjsd239344')ret1 = re.match('[a-zA-Z0-9_]{3,8}','aSjs')print(ret1.group()) #aSjs,注意匹配前一個(gè)字符出現(xiàn)3-8次,只要這個(gè)范圍內(nèi)都算匹配成功,按實(shí)際匹配print(ret.group()) #aSjsd239 匹配前一個(gè)字符出現(xiàn)3到8次 ret = re.match('[a-z0-9A-Z_]{3,}','a2')print(ret.group()) #至少出現(xiàn)3次,所以如果只有兩個(gè)的話,返回None,調(diào)用報(bào)錯(cuò)。

總結(jié):單個(gè)字符匹配,多個(gè)字符匹配上面都已經(jīng)演示過了,基本可以完成大多數(shù)字符串的匹配了。但是上面過于字符串的匹配都是從頭開始匹配的,而實(shí)際開發(fā)中可能是從字符串中間,后者結(jié)尾開始匹配的。keep reading....

2.3.正則表達(dá)式:匹配邊界的問題

字符 功能 ^ 匹配字符串開頭 $ 匹配字符串結(jié)尾 b匹配一個(gè)單詞邊界,也就是指單詞和空格間的位置。例如, ’erb’ 可以匹配'never' 中的 ’er’,但不能匹配 'verb' 中的 ’er’。 B 匹配非單詞邊界,’erB’ 能匹配 'verb' 中的 ’er’,但不能匹配 'never' 中的 ’er’。

# 導(dǎo)入re模塊import re # 匹配以@qq.com郵箱結(jié)尾的郵箱地址#1.不適用匹配字符串結(jié)尾的$來實(shí)現(xiàn),注意.要用轉(zhuǎn)義字符,一般郵箱的長度都是4-30位ret = re.match('[w]{4,30}@qq.com', 'xiaoWang@qq.com')print(ret.group()) #xiaoWang@qq.com # 通過$來確定末尾,效率更高ret = re.match('[w]{4,30}@qq.com$', 'xiaoWang@qq.com')print(ret.group()) #xiaoWang@qq.com ret = re.match('[w]{4,30}@qq.com$', 'xiaoWang@qq.com.cn')#print(ret.group()) #報(bào)錯(cuò)

到此這篇關(guān)于Python中正則表達(dá)式對單個(gè)字符,多個(gè)字符和匹配邊界等使用的文章就介紹到這了,更多相關(guān)Python 單字符,多字符匹配內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
主站蜘蛛池模板: 热镀锌槽钢|角钢|工字钢|圆钢|H型钢|扁钢|花纹板-天津千百顺钢铁贸易有限公司 | 钢衬四氟管道_钢衬四氟直管_聚四氟乙烯衬里管件_聚四氟乙烯衬里管道-沧州汇霖管道科技有限公司 | 谷歌关键词优化-外贸网站优化-Google SEO小语种推广-思亿欧外贸快车 | 间甲酚,间甲酚厂家-山东祥东新材料 | 无锡市珂妮日用化妆品有限公司|珂妮日化官网|洗手液厂家 | 金刚网,金刚网窗纱,不锈钢网,金刚网厂家- 河北萨邦丝网制品有限公司 | 深圳办公室装修,办公楼/写字楼装修设计,一级资质 - ADD写艺 | 汽车整车综合环境舱_军标砂尘_盐雾试验室试验箱-无锡苏南试验设备有限公司 | 铸铝门厂家,别墅大门庭院大门,别墅铸铝门铜门[十大品牌厂家]军强门业 | 顺景erp系统_erp软件_erp软件系统_企业erp管理系统-广东顺景软件科技有限公司 | 有福网(yofus.com)洗照片冲印,毕业聚会纪念册相册制作个性DIY平台 | 动库网动库商城-体育用品专卖店:羽毛球,乒乓球拍,网球,户外装备,运动鞋,运动包,运动服饰专卖店-正品运动品网上商城动库商城网 - 动库商城 | 高压负荷开关-苏州雷尔沃电器有限公司 | 无锡门窗-系统门窗-阳光房-封阳台-断桥铝门窗厂[窗致美] | 粘度计NDJ-5S,粘度计NDJ-8S,越平水分测定仪-上海右一仪器有限公司 | 土壤有机碳消解器-石油|表层油类分析采水器-青岛溯源环保设备有限公司 | 山东锐智科电检测仪器有限公司_超声波测厚仪,涂层测厚仪,里氏硬度计,电火花检漏仪,地下管线探测仪 | 风化石头制砂机_方解石制砂机_瓷砖石子制砂机_华盛铭厂家 | 东莞动力锂电池保护板_BMS智能软件保护板_锂电池主动均衡保护板-东莞市倡芯电子科技有限公司 | 电脑刺绣_绣花厂家_绣花章仔_织唛厂家-[源欣刺绣]潮牌刺绣打版定制绣花加工厂家 | 工控机-图像采集卡-PoE网卡-人工智能-工业主板-深圳朗锐智科 | 防水套管_柔性防水套管_刚性防水套管-巩义市润达管道设备制造有限公司 | 塑料瓶罐_食品塑料瓶_保健品塑料瓶_调味品塑料瓶–东莞市富慷塑料制品有限公司 | 合肥仿石砖_合肥pc砖厂家_合肥PC仿石砖_安徽旭坤建材有限公司 | 周易算网-八字测算网 - 周易算网-宝宝起名取名测名字周易八字测算网 | 挤出熔体泵_高温熔体泵_熔体出料泵_郑州海科熔体泵有限公司 | 玻璃瓶厂家_酱菜瓶厂家_饮料瓶厂家_酒瓶厂家_玻璃杯厂家_徐州东明玻璃制品有限公司 | 软文发布-新闻发布推广平台-代写文章-网络广告营销-自助发稿公司媒介星 | 深圳善跑体育产业集团有限公司_塑胶跑道_人造草坪_运动木地板 | 盘式曝气器-微孔曝气器-管式曝气器-曝气盘-斜管填料 | 郑州市前程水处理有限公司 | 塑料熔指仪-塑料熔融指数仪-熔体流动速率试验机-广东宏拓仪器科技有限公司 | 网带通过式抛丸机,,网带式打砂机,吊钩式,抛丸机,中山抛丸机生产厂家,江门抛丸机,佛山吊钩式,东莞抛丸机,中山市泰达自动化设备有限公司 | 工业铝型材-铝合金电机壳-铝排-气动执行器-山东永恒能源集团有限公司 | 纯化水设备-纯水设备-超纯水设备-[大鹏水处理]纯水设备一站式服务商-东莞市大鹏水处理科技有限公司 | 杭州网络公司_百度SEO优化-外贸网络推广_抖音小程序开发-杭州乐软科技有限公司 | 广州监控安装公司_远程监控_安防弱电工程_无线wifi覆盖_泉威安防科技 | 远程会诊系统-手术示教系统【林之硕】医院远程医疗平台 | uv固化机-丝印uv机-工业烤箱-五金蚀刻机-分拣输送机 - 保定市丰辉机械设备制造有限公司 | 模具硅橡胶,人体硅胶,移印硅胶浆厂家-宏图硅胶科技 | 科客,主见不成见| 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 - 杭州标识标牌|文化墙|展厅|导视|户内外广告|发光字|灯箱|铭阳制作公司 |