正则表达式--re模块的使用

前端之家收集整理的这篇文章主要介绍了正则表达式--re模块的使用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

re模块使用

regex=compile(pattern,flags=0)

功能:生产正则表达式对象

参数:pattern 正则表达式

   flags 功能标志位 扩展正则表达式的匹配

返回值:正则表达式对象

import re

s = Alxe:1994,Sunny:1993
pattern = r(\w+):(\d+)

#使用compiel对象调用
regex=re.compile(pattern)
l=regex.findall(s)
print(l)
#[(‘Alxe‘,‘1994‘),(‘Sunny‘,‘1993‘)]

一、re.findall(pattern,string,flags=0)

功能:根据正则表达式匹配目标字符串内容

参数:pattern 正则表达式

   string 目标字符串

   flags 功能标志位,扩展正则表达式的匹配

返回值:匹配到的内容列表,如果正则表达式有子组,则只能获取到子组对应的内容

s = "Alex:1994,Sunny:1993"
pattern = r"(\w+):(\d+)"

# re模块调用findall
l = re.findall(pattern,s)
print(l)
#[(‘Alex‘,‘1993‘)]

二、regex.findall(string,pos,endpos)

功能:根据正则表达式陪陪目标字符串内容

参数:string 目标字符串

   pos 截取目标字符串的开始匹配位置

   endpos 截取目标字符串的结束匹配位置

返回值:匹配到的内容列表,如果正则表达式有子组,则只能获取到子组对应的内容

import re

s = Alxe:1994,Sunny:1993
pattern = r\w+

#使用compiel对象调用
regex=re.compile(pattern)
l=regex.findall(s,2,8)
print(l)
#[‘ex‘,‘199‘]

三、re.split(pattern,flags=0)

功能:使用正则表达式匹配内容,切割目标字符串

参数:pattern 正则表达式

   string 目标字符串

   flags 功能标志位,扩展正则表达式的匹配

返回值:切割后的内容列表

import re

s = Alxe:1994,Sunny:1993

l=re.split(r:|,,s)
l1=re.split(r[,:],s)按列表切割可以切割两个以上
print(l)
print(l1)
#[‘Alxe‘,‘1994‘,‘Sunny‘,‘1993‘]
#[‘Alxe‘,‘1993‘]

四、re.sub(pattern,replace,max,flags=0)

功能:使用一个字符串替换正则表达式匹配到的内容

参数:pattern 正则表达式

   replace 替换的字符串

   string 目标字符串

   max 最多替换几处,默认替换全部

   flags 功能标志位,扩展正则表达式的匹配

返回值:替换后的字符串

import re

s=re.sub(r\s+,#,This is a test,2)
print(s)
This#is#a test

五、re.subn(pattern,flags=0)

功能:使用一个字符串替换正则表达式匹配到的内容

参数:pattern 正则表达式

   replace 替换的字符串

   string 目标字符串

   max 最多替换几处,默认替换全部

   flags 功能标志位,扩展正则表达式的匹配

返回值:替换后的字符串和替换了几处

#替换匹配的内容
s=re.subn(r\s+,2)
print(s)
#(‘This#is#a test‘,2)

六、re.finditer(pattern,flags=0)

功能:根据正则表达式匹配目标字符串内容

参数:pattern 正则表达式

   string 目标字符串

   flags 功能标志位 扩展正则表达式的匹配

返回值:匹配结果的迭代器

import re

s=2019年,建国70年
pattern=r\d+
it=re.finditer(pattern,s)
# print(dir(it.__next__()))
for i in it:
  print(i.group())#获取match对象对应内容

#2019
#70

七、re.fullmatch(pattern,flags=0)

功能:完全匹配某个目标字符串

参数:pattern 正则

   string 目标字符串

返回值:匹配内容match object

#完全匹配
m=re.fullmatch(r\w+,Jame1)
print(m.group())
#Jame1

八、re.match(pattern,flags=0)

功能:匹配某个目标字符串开始位置

参数:pattern 正则

   string 目标字符串

返回值:匹配内容match object

#匹配开始位置
m=re.match(r[A-Z]\w*,Hello world)
print(m.group()) #Hello

九、re.seatch(pattern,flags=0)

功能:匹配目标字符串第一个符合内容

参数:pattern 正则

   string 目标字符串

返回值:匹配内容match object

#匹配第一处
m=re.search(r"[A-Z]\w*",  Hello  world)
print(m.group())
Hello

compile对象属性

  • flags : flags值@H_20_502@
  • pattern : 正则表达式@H_20_502@
  • groups : 子组数量@H_20_502@
  • groupindex : 捕获组名与组序号的字典@H_20_502@

match对象的属性方法

  1. 属性变量@H_20_502@
  • pos 匹配的目标字符串开始位置@H_20_502@
  • endpos 匹配的目标字符串结束位置@H_20_502@
  • re 正则表达式@H_20_502@
  • string 目标字符串@H_20_502@
  • lastgroup 最后一组的名称@H_20_502@
  • lastindex 最后一组的序号@H_20_502@
  1. 属性方法@H_20_502@
  • group(n = 0)@H_20_502@

  功能获取match对象匹配内容

  参数:默认为0表示获取整个match对象内容,如果是序列号或者组名则表示获取对应子组内容

  返回值:匹配字符串

分享图片

flags参数扩展

  1.使用函数:re模块调用的匹配函数。如:re.compile,re.findall,re.search...

  2.作用:扩展丰富正则表达式的匹配功能

  3.常用flag

    • A == ASCII 元字符只能匹配ascii码@H_20_502@
    • I == IGNORECASE 匹配忽略字母大小写@H_20_502@
    • S == DOTALL 使 . 可以匹配换行@H_20_502@
    • M == MULTILINE 使 ^ $可以匹配每一行的开头结尾位置@H_20_502@
    • X == VERBOSE 为正则添加注释@H_20_502@

  4.使用多个flag

    方法:使用按位或连接  例如:flags = re.I | re.A

 

s = """Hello
北京
"""
# 自能匹配ASCII
regex = re.compile(r\w+,flags=re.A)
l = regex.findall(s)  # [‘Hello‘]
print(l)
# 不区分大小写
regex1 = re.compile(r[A-Z]+,flags=re.I)
l = regex1.findall(s)
print(l)  # [‘Hello‘]
# 让.匹配换行
regex2 = re.compile(r.+,flags=re.S)
l = regex2.findall(s)
print(l)  # [‘Hello\n北京\n‘]
# ^$ 匹配每行开头结尾
regex3 = re.compile(rHello$,flags=re.M)
l = regex3.findall(s)
print(l)  # [‘Hello‘]
pattern = """
\w+  #hello
\s+  #匹配换行
\w+  #北京
"""
regex4 = re.compile(pattern,flags=re.X)
l = regex4.findall(s)
print(l)  # [‘Hello\n北京‘]

猜你在找的正则表达式相关文章