正则表达式


感觉没啥必要积累了,建议有需求直接gpt,文章内容看个乐子吧:)

一、概念

正则表达式(Regular Expression,regex 或 regexp)是一种用于描述字符串模式的工具。它是通过定义字符串的特定模式来查找、匹配和处理文本的一种方法。
正则表达式通常用于文本处理、数据验证、搜索和替换。

二、用法自查

2.1 字符直接匹配

普通字符,如 a, b, 1, &, @,直接匹配相应的字符。括号除外,括号 () 有捕获组的含义

2.3 字母或数字匹配

[abc]: 匹配字符 a、b 或 c 中的任何一个。
[a-z]: 匹配任何小写字母。
[0-9]: 匹配任何数字字符。

2.2 特殊匹配

.: 匹配任何单个字符(除换行符外)。
\d: 匹配任何数字字符(\d 的作用等于 [0-9])。
\D: 匹配任何非数字字符。
\w: 匹配任何字母、数字或下划线(等于 [a-zA-Z0-9_])。
\W: 匹配任何非字母、非数字或非下划线字符。
\s: 匹配任何空白字符(包括空格、制表符、换行符等)。
\S: 匹配任何非空白字符。

2.4 匹配次数

*: 匹配前面的元素零次或多次,通常和 .* 一起使用。
+: 匹配前面的元素一次或多次。
?: 匹配前面的元素零次或一次。
{n}: 匹配前面的元素恰好 n 次。
{n,}: 匹配前面的元素至少 n 次。
{n,m}: 匹配前面的元素至少 n 次,最多 m 次。

2.5 匹配位置

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

2.6 分组和捕获

(): 用于分组和捕获。分组允许你对多个字符进行操作(如量词),捕获可以提取匹配的子字符串
(?:...): 用于非捕获分组,即仅进行分组,不捕获匹配的内容。

2.7 转义

用于转义特殊字符,使其被视为普通字符,例如 \. 匹配点号本身。

三、举例

3.1 邮箱

匹配邮箱地址:qiuyujiancqupt@163.com

^\w+@\w+\.\w+$

^ 表示开始
\w+ 表示一个或多个字母、数字或下划线
@ 表示字符 @
\w+ 表示域名部分
\. 表示点号
\w+ 表示顶级域名
$ 表示结束

3.2 日期

匹配日期格式 YYYY-MM-DD,并捕获年、月、日。

(\d{4})-(\d{2})-(\d{2})

3.3 提取关键字后的数字

需提取温度后的温度值:temperature: 23.5 (C)
使用正则表达式提取:

match = re.search(r': (.*) \(C\)', line)

r' xxxx ' 两个分号中间的字符串表示为“原始字符串”(忽略反斜杠 \ 的转义功能)
: 匹配冒号加空格,这意味着搜索的目标字符串中应该有一个冒号和一个空格。
(.*)
------() 小括号表示一个捕获组。为了将匹配的内容提取(温度值)。
------.* 点号表示匹配尽可能多的字符(除了换行符),直到下一个明确的匹配符号。
\(C\) 圆括号需要用反斜杠来转义(否则就成了捕获组了),故\(\) 用来匹配圆括号本身。C 是普通字符,所以它将匹配字母 C。

故此行python代码中的正则表达式匹配的模式是:

  1. 从左往右,匹配一个冒号加空格 :
  2. .* 匹配一段尽可能多的字符
  3. \(C\) 迫使 .* 停止匹配,因为 \(C\) 是下一个必须匹配的部分。最后是 (C)

总结

持续更新积累

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

秋雨qy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值