百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

史上最全正则详解

off999 2025-05-24 16:03 49 浏览 0 评论

涉及到处理文本数据时,Python的正则表达式(Regular Expression)提供了一种强大而灵活的工具。下面详细讲解一些常见的正则表达式语法,并提供实例来说明它们的用法。

  1. 正则表达式语法
  2. 正则表达式由一系列字符和特殊字符组成,用于定义匹配模式。以下是一些常用的正则表达式语法:
  3. 普通字符:表示匹配该字符本身,如a匹配字符"a"。
  4. 元字符:具有特殊意义的字符,如^、.、*等。
  5. 字符类:用[]表示,匹配方括号中的任意字符,如[abc]匹配"a"、"b"或"c"。
  6. 转义字符:用\表示,用于取消元字符的特殊含义,如\.匹配字符"."。
  7. 重复限定符:用于指定前面的元素重复出现的次数,如*表示零次或多次,+表示一次或多次,{n}表示恰好出现n次。
  8. 边界匹配:用于匹配字符串的边界位置,如^表示字符串的开头,$表示字符串的结尾。
  9. 分组和捕获:用()表示,可以将匹配的内容分组并进行后续操作。
  10. 使用re模块进行匹配
  11. re模块提供了多个函数用于进行正则表达式的匹配操作,以下是一些常用的函数:
  12. re.match(pattern, string):从字符串的开头开始匹配,如果匹配成功返回一个匹配对象,否则返回None。
  13. re.search(pattern, string):在字符串中搜索匹配项,如果找到第一个匹配项就返回一个匹配对象,否则返回None。
  14. re.findall(pattern, string):在字符串中搜索所有匹配项,并以列表的形式返回所有匹配项。
  15. re.finditer(pattern, string):在字符串中搜索所有匹配项,并以迭代器的形式返回所有匹配对象。
  16. 匹配对象的操作方法与属性
  17. 当使用匹配函数成功匹配后,返回的是一个匹配对象,可以通过该对象进行操作和获取相关信息。以下是一些常用的操作方法和属性:
  18. group():返回匹配到的字符串。
  19. start():返回匹配的起始位置。
  20. end():返回匹配的结束位置。
  21. span():返回匹配的起始和结束位置(元组形式)。



4、详细实例及使用技巧讲解

首先,导入Python中的re模块:

import re

  1. 匹配字符和元字符:
  • 普通字符:表示匹配字符本身。
  • pythonCopy Code
  • pattern = r'cat' # 匹配字符串 "cat"
  • 元字符:
    • .: 匹配除换行符外的任意字符。
    • pythonCopy Code
    • pattern = r'c.t' # 匹配"c"和"t"之间的任意字符,如"cat"、"cut"等
    • ^: 匹配字符串的开头。
    • pythonCopy Code
    • pattern = r'^cat' # 匹配以"cat"开头的字符串
    • $: 匹配字符串的结尾。
    • pythonCopy Code
    • pattern = r'cat#39; # 匹配以"cat"结尾的字符串
    • \: 转义字符,用于去除元字符的特殊含义。
    • pattern = r't\.k' # 匹配"t.k"的字符串,转义了元字符 "."
  1. 字符类:

字符类用于匹配方括号内的任意字符。

  • [abc]: 匹配字符"a"、"b"或"c"。
  • pattern = r'[abc]' # 匹配字符"a"、"b"或"c"
  • [a-z]: 匹配任意小写字母。
  • pattern = r'[a-z]' # 匹配任意小写字母
  • [^0-9]: 匹配除数字外的任意字符。
  • pattern = r'[^0-9]' # 匹配除数字外的任意字符
  1. 重复限定符:

用于指定前面元素重复出现的次数。

  • *: 匹配零次或多次。
  • pattern = r'ab*' # 匹配"a"后跟零个或多个"b"的字符串,如"a", "ab", "abb", "abbb"等
  • +: 匹配一次或多次。
  • pattern = r'ab+' # 匹配"a"后跟至少一个"b"的字符串,如"ab", "abb", "abbb"等
  • ?: 匹配零次或一次。
  • pattern = r'ab?' # 匹配"a"后跟零个或一个"b"的字符串,如"a", "ab"等
  • {n}: 匹配恰好出现n次。
  • pattern = r'a{3}' # 匹配连续出现三次的字符"a",如"aaa"
  • {n, m}: 匹配至少出现n次、最多出现m次。
  • pattern = r'a{2,4}' # 匹配连续出现2~4次的字符"a",如"aa", "aaa", "aaaa"
  1. 边界匹配:

用于匹配字符串的边界位置。

  • ^: 匹配字符串的开头。
  • pattern = r'^cat' # 匹配以"cat"开头的字符串
  • $: 匹配字符串的结尾。
  • pattern = r'cat#39; # 匹配以"cat"结尾的字符串
  1. 分组和捕获:

使用括号 () 进行分组并进行后续操作。

  • (): 将括号内的表达式作为一个分组。
  • pattern = r'(ab)+' # 匹配由连续的"ab"组成的字符串,如"ab", "abab", "ababab"等
  • (?:): 只分组不捕获,不创建捕获组。
  • pattern = r'(?:ab){2}' # 匹配由连续的"ab"组成且出现两次的字符串,如"abab"

下面是一个实例代码,演示如何使用正则表达式进行匹配:

import re

# 匹配日期格式(YYYY-MM-DD)
pattern = r'\d{4}-\d{2}-\d{2}'
string = 'Today is 2023-01-01, and tomorrow is 2023-01-02.'
result = re.findall(pattern, string)
print(result)  # 输出:['2023-01-01', '2023-01-02']

# 匹配邮箱地址
pattern = r'\w+@\w+\.\w+'
string = 'My email is abc@example.com'
match = re.search(pattern, string)
if match:
    email = match.group()
    print(email)  # 输出:abc@example.com
else:
    print("未找到匹配的邮箱地址")

# 提取正文中的所有链接
pattern = r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+'
string = 'Here are some links: http://example.com, https://www.google.com'
links = re.findall(pattern, string)
print(links) # 输出:['http://example.com', 'https://www.google.com']



相关推荐

电脑装系统蓝屏(电脑装系统蓝屏重启开不了机)

蓝屏的原因往往集中在不兼容的硬件和驱动程序、有问题的软件、病毒等。解决办法:1、病毒的原因。使用电脑管家杀毒。2、内存的原因。用橡皮擦把内存条的金手指擦拭一下,把氧化层擦掉,确保内存条安装、运行正常。...

u盘安装软件(u盘安装软件到电视)

第一种情况:软件安装包可以直接下载的。在电脑上将软件安装包下载到本地硬盘,然后将下载好软件安装包拷贝到U盘上即可拿到别的电脑上去安装。分可为exe格式的和rar格式,exe格式直接安装,rar格式的解...

microsoft官网账户注册(microsoft 帐户注册)

要创建Microsoft账户,您可以按照以下步骤进行操作:1.打开任意一个支持浏览器的设备,如电脑、手机或平板电脑。2.在浏览器中输入"Microsoft账户注册"或直接访问Mic...

outlookcom官网(outlook online archive auto)
  • outlookcom官网(outlook online archive auto)
  • outlookcom官网(outlook online archive auto)
  • outlookcom官网(outlook online archive auto)
  • outlookcom官网(outlook online archive auto)
显示器闪屏是什么原因(显示器闪屏是哪里坏了)

解决方法:  一、接触不良导致的显示器闪屏  先查看主机和显示器的电源线连接,是否松动,重新插拔一下电源线。  二、信号干扰导致的显示器闪屏  1、连接显示器的电缆线是否没有屏蔽线圈,如果没有防干扰的...

国产linux操作系统(国产linux操作系统有什么版本)

中国对于操作系统的探索其实并不晚。  早在20世纪60年代中期中国就开始操作系统的研发,那时的比尔·盖茨还只是个迷恋计算机的小字辈,南京大学教授孙钟秀、北京大学杨芙清院士等都是我国操作系统的拓荒者...

免费无需排队的云电脑(不需要排队的云电脑)

目前市场上有一些云游戏平台提供无限时长且无需排队的服务。这些平台通常采用先进的云计算技术和高性能服务器,能够提供稳定流畅的游戏体验。用户可以随时登录并畅玩游戏,无需等待排队。这些平台还提供多种游戏选择...

视频播放器下载量排名(2020视频播放器排行榜)
  • 视频播放器下载量排名(2020视频播放器排行榜)
  • 视频播放器下载量排名(2020视频播放器排行榜)
  • 视频播放器下载量排名(2020视频播放器排行榜)
  • 视频播放器下载量排名(2020视频播放器排行榜)
wps官方下载(wps官方下载官网电脑版网址)

具体的步骤如下:1、首先在电脑上打开浏览器,在浏览器中输入“WPS”,找到WPS官方网站。2、接下来进入WPS官方网站中,找到WPS软件,点击“免费下载”。3、点击下载后在弹出来的对话框中修改下载位置...

win vista与win7有什么区别(win7与vista关系)

WindowsVista和Windows7是微软公司推出的两个桌面操作系统,它们之间有以下主要区别:1.界面设计:Windows7的界面设计更加简洁明了,而WindowsVista的界面...

winxp系统版本(winxp 版本)

1、微软官方3个版本:WINDOWSXPHOME(家庭版)、Professional(专业版)、MediaCenter2005(媒体中心版),每个版本的功能不一样。使用最多的是Professional...

打印机无法共享怎么回事(打印机无法共享出去)

共享打印机无法打印原因一:可能是由于病毒死机解决方法:确定是否由于病毒死机,找一张干净(确信无病毒)的系统盘,从A驱动舒上启动电脑,检查此时打印机和主机能否联机。如果正常联机,估计这种故障是由攻击硬件...

ipv6无网络访问权限怎么解决

ipv6无网络访问权限解决方法如下1、点击电脑左下角的开始,进入到开始的菜单栏,在菜单栏中找到“运行”。或者通过快捷键Windows+R打开运行窗口。  2、打开运行的窗口页面后,在页面上输入“CMD...

office ltsc版(Office LTSC版本区别)

office2021和2021ltsc的区别如下:1.更新策略不同。前者采用每个月月度更新的方法,提供功能更新、安全更新。后者不采用每个月月度更新的方法,且不提供功能更新。2.界面不同。2021采用了...

安装win7需要激活吗(现在安装win7旗舰版还需密钥吗)

要激活  Windows7如果是预装在计算机中的,买来之后便不用激活,这里预装指的是在厂商那里。正版的Windows7安装到计算机中,有三十天的试用期,若要永久使用,就要使...

取消回复欢迎 发表评论: