Python程序设计之子模式与match对象

Phemia ·
更新时间:2024-11-01
· 522 次阅读

1.match函数详解
(matchobject/None) match(pattern,string[,flags])
函数参数由模式串patter,原字符串,以及可选参数组成,patter的值有以下几种

'\\d+' #使用"\"开头的元字符实现字符串特定搜索 r'\d+' #使用r''原始字符串实现字符串特定搜索 r"(\w+) (\w+)" "(\\d+) (\\w+)" #用子模式做匹配字符串 #子模式是指以"(正则表达式)"这种形式存在的字符串

第三个可选参数有以下几种选择,可以使用"|"符号自由组合

import re re.I #表示忽略大小写 re.L #做本地化识别(locale-aware)匹配 re.M #表示多行匹配模式 re.S #表示元字符可以匹配任何字符,包括换行符 re.U #配Unicode字符 re.X #忽略模式中空格,并可以使用#注释

当match()函数返回match对象时,有以下几种方法

import re tr='hello 20 hello 35 nihao 40 hello' part1=re.compile(r'\d+') #使用"\"开头的元字符实现字符串特定搜索 part4=re.compile('\\s+') resulit1=part1.search(sss,index1) #按照索引搜索 resulit2=part4.search(sss) res=re.match("(\\w+) (\\d+)","heelo 12,hello 14") print(res.groups(),end='\n') res1=re.match(r"(\w+) (\w+)","heelo my hello you").groups() print(res1,end='\n') #print(res.groups(),end='\n') #s输出第一个元组信息 #print(resulit1.group(1),end='\n') print(resulit1.groups(),end='\n') print(resulit1.start(),end='\n') #返回第一次出现的位置 print(resulit2.end(),end='\n') #返回最后一次出现的位置 print(resulit1.groupdict(),end='\n') #输出字典 print(resulit2.groupdict(),end='\n') print(resulit1.span(),end='\n') #返回字符出现开始和结束位置 print(resulit2.span(),end='\n') print(re.match(r"(\w+) (\w+)","heelo my hello you").group(1,2)) print(re.match(r"(?P\w+) (?P\w+)","heelo my hello you").group('f','s'))

下面是输出结果:

('heelo', '12') ('heelo', 'my') () 21 6 {} {} (21, 23) (5, 6) ('heelo', 'my') ('heelo', 'my')

代码:

import re ss='hello 23 world 56 my number is 1234-5678' print(re.match('(\\w+) (\\d+)',ss))

输出

2.search()函数
matchobject/None search(pattern,string[,flags])
search()函数返回的是模式串的详细信息

import re s0='135-94359171 155-12345678 hello 2122-505678' print(re.search(r'(\d{3,4})-(\d{6,8})', s0),end='\n')

结果如下:

123-1231441

3.split()函数
list split(pattern,string[,maxsplit=0])

import re sss='first match object h 20 552' part4=re.compile('\\s+') print(part4.split(sss)) #按照匹配模式进行划分

输出结果:

['first', 'match', 'object', 'h', '20', '552']

4.sub()函数
string sub(pattern,string[,count=0])

import re sss='first match object h 20 552' part2=re.compile('\\d+') #使用r''原始字符串实现字符串特定搜索 print(part2.sub('h',sss)) print(re.sub(part2,'h',sss)) #替换模式匹配的字符串

结果

first match object h h h first match object h h h

5.escape()函数
string escape(string)

import re sss='first match object h 20 552' print(re.escape(ssss)) #将特殊字符进行转义

结果:

first\ match\ object\ \\\ \\\+

6.findall()函数
list findall(pattern,string[,flags])

import re sss='first match object h 20 552' part1=re.compile(r'\d+') #使用"\"开头的元字符实现字符串特定搜索 part3=re.compile('\\w+') #求所有符合条件的字符 print(part1.findall(sss)) #findall()函数是输出所符合条件的模式匹配项 print(part3.findall(sss))

结果:

['20', '552'] ['first', 'match', 'object', 'h', '20', '552']

参考文章:
https://blog.csdn.net/qxyloveyy/article/details/104482502


作者:QinHsiu



python程序 match Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号