Python学习笔记(2)正则表达式

正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。

在 Python 中,使用 re 模块提供的函数来处理正则表达式,允许你在字符串中进行模式匹配、搜索和替换操作。

1 正则表达式

正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"),可以用来描述和匹配字符串的特定模式。

正则表达式是一种用于模式匹配和搜索文本的工具。

正则表达式提供了一种灵活且强大的方式来查找、替换、验证和提取文本数据。

下面先给出一个简单的示例:
在这里插入图片描述

  • ^ 为匹配输入字符串的开始位置。
  • [0-9]+匹配多个数字, [0-9] 匹配单个数字,+ 匹配一个或者多个。
  • abc$匹配字母 abc 并以 abc 结尾,$ 为匹配输入字符串的结束位置。

再举一个例子,只允许用户名包含字符、数字、下划线和连接字符 -:
在这里插入图片描述

  • ^ 表示匹配字符串的开头。
  • `[a-zA-Z0-9_-]`` 表示字符集,包含小写字母、大写字母、数字、下划线和连接字符 -。
  • {3,15} 表示前面的字符集最少出现 3 次,最多出现 15 次,从而限制了用户名的长度在 3 到 15 个字符之间。
  • $ 表示匹配字符串的结尾。

以上的正则表达式可以匹配 runoob、runoob1、run-oob、run_oob, 但不匹配 ru,因为它包含的字母太短了,小于 3 个无法匹配。也不匹配 runoob$, 因为它包含特殊字符。

1.1 正则表达式元字符和特性

1.1.1 字符匹配

普通字符: 普通字符按照字面意义进行匹配,例如匹配字母 “a” 将匹配到文本中的 “a” 字符。
元字符: 元字符具有特殊的含义,例如 \d 匹配任意数字字符,\w 匹配任意字母数字字符,. 匹配任意字符(除了换行符)等。

1.1.2 量词

  • *:匹配前面的模式零次或多次。
  • +:匹配前面的模式一次或多次。
  • ?:匹配前面的模式零次或一次。
  • {n}:匹配前面的模式恰好 n 次。
  • {n,}:匹配前面的模式至少 n 次。
  • {n,m}:匹配前面的模式至少 n 次且不超过 m 次。

1.1.3 字符类

  • [ ]:匹配括号内的任意一个字符。例如,[abc] 匹配字符 “a”、“b” 或 “c”。
  • [^ ]:匹配除了括号内的字符以外的任意一个字符。例如,[^abc] 匹配除了字符 “a”、“b” 或 “c” 以外的任意字符。

1.1.4 边界匹配

  • ^:匹配字符串的开头。
  • $:匹配字符串的结尾。
  • \b:匹配单词边界。
  • \B:匹配非单词边界。

1.1.5 分组和捕获

  • ( ):用于分组和捕获子表达式。
  • (?: ):用于分组但不捕获子表达式。
    特殊字符
  • \:转义字符,用于匹配特殊字符本身。
  • .:匹配任意字符(除了换行符)。
  • |:用于指定多个模式的选择。

详细教程参考:https://www.runoob.com/regexp/regexp-tutorial.html

2 Python的正则表达式处理模块

2.1 re.match函数

re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match() 就返回 None。

函数语法:

re.match(pattern, string, flags=0)
'''
- pattern	匹配的正则表达式
- string	要匹配的字符串。
- flags	    标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见:正则表达式修饰符 - 可选标志
'''
import re
print(re.match('www', 'www.runoob.com'))  # 在起始位置匹配
print(re.match('com', 'www.runoob.com'))  # 不在起始位置匹配

运行结果:
在这里插入图片描述
第一个输出的是(0,3),即匹配成功的索引,第二个虽然原字符串中有,但不是从起始位置开始匹配成功的,所以输出None

匹配成功 re.match 方法返回一个匹配的对象,否则返回 None。 我们可以使用 group(num)groups() 匹配对象函数来获取匹配表达式。


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青石横刀策马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值