python正则表达式详细版

目录

常用的正则表达式处理函数。

1、re.match()函数和re.search()函数,实现字符串的正则匹配

2、re.sub()函数,用于 检索和替换

3、re.compile() 函数,生成一个正则表达式( Pattern )对象

4、re.compile() 供 match() 和 search() 这两个函数的使用

5、findall()使用,匹配的所有子串,列表返回

6、re.finditer()使用,匹配的所有子串,迭代器返回

7、re.split()使用,将字符串分割后返回列表

8、'(?P...)' 分组匹配

附件1、flags匹配模式规则表

附件2、pattern正则表达式匹配模式规则表


正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。它能帮助你方便的检查一个字符串是否与某种模式匹配。最常见的邮箱规则模式:[a-zA-Z0-9_-]+@[a-zA-Z0-9]+(\.[a-zA-Z0-9]+),什么意思呢?做数据清洗的时候想查出一些特定的字符,批量替换一些指定的字符怎么做?...等等,在python中,这些都可以用正则表达式处理函数进行处理。

re 模块使 Python 语言拥有全部的正则表达式功能。使用前导入该模块:import re

常用的正则表达式处理函数。

1、re.match()函数和re.search()函数,实现字符串的正则匹配

 match 和 search 只匹配一次,当正则表达式在字符串中匹配到多个结果时,在不指定全部返回的情况下,只返回最先匹配到的第一个结果。

  • re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
  • 函数语法:re.match(pattern, string, [flags])
  • re.search 扫描整个字符串从任意位置匹配并返回第一个成功的匹配。
  • 函数语法:re.search(pattern, string, [flags])  
  • re.match与re.search的区别:
  • re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。所以实际应用往往使用re.search()函数。

参数:

  • pattern:匹配的正则表达式(参考后面的正则表达式匹配模式附件)。
  • string:要匹配的字符串。
  • flags:标志位,用于控制正则表达式的匹配方式(参考后面的flags匹配模式模块

结果获取:

  • span():获取所匹配元素的起止位置
  • start() :返回匹配开始的位置
  • end() :返回匹配结束的位置
  • group(num) / groups() :我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。

group(num=0)

匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
groups() 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。

re.match函数案例:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import re
line = "This is a regular expression for python"
matchObj = re.match(r'(.*) is (.*?) .*', line, re.M | re.I)
if matchObj:
    print("matchObj.span() :",matchObj.span())
    print("matchObj.group() : ", matchObj.group())
    print("matchObj.group(1) : ", matchObj.group(1))
    print("matchObj.group(2) : ", matchObj.group(2))
    print("matchObj.groups()) :", matchObj.groups())
else:
    print("No match!!")

结果:
matchObj.span() : (0, 39)
matchObj.group() :  This is a regular expression for python
matchObj.group(1) :  This
matchObj.group(2) :  a
matchObj.groups()) : ('This', 'a')

re.search函数案例:

#re.search()函数,扫描整个字符串从任意位置匹配并返回第一个成功的匹配。
line = "This is a regular expression for python"
searchObj = re.search(r"a (.*) for (p.*n$)",line,re.M | re.I)
print("searchObj.span() :",searchObj.span())
print("searchObj.group() : ", searchObj.group())#重点使用
print("searchObj.group(1) : ", searchObj.group(1))
print("searchObj.groups() : ", searchObj.groups())

输出:
searchObj.span() : (8, 39)
searchObj.group() :  a regular expression for python
searchObj.group(1) :  regular expression
searchObj.groups() :  ('regular expression', 'python')
#re.mactch()函数和re.search()函数对比
import re
line = "This is a regular expression for python"
matchObj = re.match(r"python",line,re.M | re.I)
if matchObj:
    print(matchObj.group())
else:
    print("No match!!")
searchObj = re.search(r"python",line,re.M | re.I)
if searchObj:
    print(searchObj.group()) 
else:
    print("No search!!")

输出:
No match!!
python
  • 29
    点赞
  • 119
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python正则表达式是一种特殊的字符序列,用于匹配和提取字符串。Python的re模块提供了Perl风格的正则表达式模式,并提供了一系列与这些模式匹配和操作字符串的函数。正则表达式具有通用性,不仅在Python中适用,也适用于其他编程语言。 下面是一些常用的正则表达式的元字符: 1. '.':匹配除换行符外的任意字符。 2. '^':匹配字符串的开头。 3. '$':匹配字符串的结尾。 4. '*':匹配前一个字符零次或多次。 5. '+':匹配前一个字符一次或多次。 6. '?':匹配前一个字符零次或一次。 7. '{m}':匹配前一个字符m次。 8. '{m,n}':匹配前一个字符至少m次,最多n次。 9. '|':匹配|前或|后的字符。 10. '\\':转义字符,用于匹配特殊字符。 常用的正则表达式函数包括: 1. re.match(pattern, string):从字符串的开头开始匹配模式。 2. re.search(pattern, string):在整个字符串中搜索匹配模式。 3. re.findall(pattern, string):返回字符串中所有匹配模式的子串列表。 4. re.sub(pattern, repl, string):将匹配模式的子串替换为指定的字符串。 5. re.split(pattern, string):根据匹配模式分割字符串。 以下是一个例子,展示了如何使用Python正则表达式进行匹配和替换: ```python import re # 匹配字符串开头的数字 result = re.match('\d+', '123abc') print(result.group()) # 输出: 123 # 搜索字符串中的数字 result = re.search('\d+', 'abc123def') print(result.group()) # 输出: 123 # 返回字符串中所有的数字 result = re.findall('\d+', 'abc123def456') print(result) # 输出: ['123', '456'] # 将字符串中的数字替换为#号 result = re.sub('\d+', '#', 'abc123def456') print(result) # 输出: abc#def# # 根据逗号分割字符串 result = re.split(',', 'a,b,c,d') print(result) # 输出: ['a', 'b', 'c', 'd'] ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值