正则的基本用法

本文详细介绍了正则表达式的基本用法,包括了解正则表达式、语法规则、相关注解,特别是Python中`re`模块的使用,如`match`、`search`、`split`、`findall`、`finditer`、`sub`和`subn`等方法,以及正则表达式的匹配过程和分组区配。通过实例解析了正则表达式在Python中的应用。
摘要由CSDN通过智能技术生成

一、了解正则表达式

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

正则表达式是用来匹配字符串非常强大的工具,在其他编程语言中同样有正则表达式的概念,Python同样不例外,利用了正则表达式,我们想要从返回的页面内容提取出我们想要的内容就易如反掌了。

正则表达式的大致匹配过程是:

1.依次拿出表达式和文本中的字符比较,
2.如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。
3.如果表达式中有量词或边界,这个过程会稍微有一些不同。

二、正则表达式的语法规则

下面是Python中正则表达式的一些匹配规则,图片资料来自CSDN
这里写图片描述

三、正则表达式相关注解

(1)数量词的贪婪模式与非贪婪模式

正则表达式通常用于在文本中查找匹配的字符串。Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符。例如:正则表达式”ab*”如果用于查找”abbbc”,将找到”abbb”。而如果使用非贪婪的数量词”ab*?”,将找到”a”。

注:我们一般使用非贪婪模式来提取。

(2)反斜杠问题

与大多数编程语言相同,正则表达式里使用”\”作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配文本中的字符”\”,那么使用编程语言表示的正则表达式里将需要4个反斜杠”\\”:前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。

Python里的原生字符串很好地解决了这个问题,这个例子中的正则表达式可以使用r”\”表示。同样,匹配一个数字的”\d”可以写成r”\d”。有了原生字符串,妈妈也不用担心是不是漏写了反斜杠,写出来的表达式也更直观勒。

(3)分组区配
通过引用编号或别名来匹配时,应特别注意:引用部分匹配的字符串与组区配的字符串应保持一致,如:
(\d)abc\1 能匹配5abc5,但不能匹配2abc5

四、Python Re模块

Python 自带了re模块,它提供了对正则表达式的支持。主要用到的方法列举如下

#返回pattern对象
re.compile(string[,flag])
#以下为匹配所用函数re.match(pattern,string[,flags])
re.search(pattern,string[,flags])
re.split(pattern,string[,maxsplit])
re.findall(pattern,string[,flags])
re.finditer(pattern,string[,flags])
re.sub(pattern,repl,string[,count])
re.subn(pattern,repl,string[,count])

在介绍这几个方法之前,我们先来介绍一下pattern的概念,pattern可以理解为一个匹配模式,那么我们怎么获得这个匹配模式呢?很简单,我们需要利用re.compile方法就可以。例如

pattern=re.compile(r'hello')

在参数中我们传入了原生字符串对象,通过compile方法编译生成一个pattern对象,然后我们利用这个对象来进行进一步的匹配。

另外大家可能注意到了另一个参数 flags,在这里解释一下这个参数的含义:

参数flag是匹配模式,取值可以使用按位或运算符’|’表示同时生效,比如re.I | re.M。

可选值有:

re.I(全拼:IGNORECASE):忽略大小写(括号内是完整写法&
正则表达式是一种用于匹配和搜索文本模式的工具。它可以用于字符串匹配、替换、提取等操作。下面是一些常见的正则表达式基本用法: 1. 字符匹配: - 普通字符:使用普通字符直接匹配目标字符串中的对应字符,例如 `abc` 可以匹配字符串 "abc"。 - 字符类:使用方括号 `[ ]` 匹配一个字符类,例如 `[abc]` 可以匹配 "a"、"b" 或 "c" 中的任意一个字符。 - 范围类:使用连字符 `-` 可以指定一个字符范围,例如 `[a-z]` 可以匹配任意小写字母。 - 反向类:在字符类前加上 `^` 可以匹配除了字符类中的字符之外的所有字符,例如 `[^0-9]` 可以匹配任意非数字字符。 2. 重复匹配: - `*`:匹配前面的元素零次或多次,例如 `a*` 可以匹配零个或多个连续的 "a"。 - `+`:匹配前面的元素一次或多次,例如 `a+` 可以匹配一个或多个连续的 "a"。 - `?`:匹配前面的元素零次或一次,例如 `a?` 可以匹配零个或一个 "a"。 - `{n}`:匹配前面的元素恰好 n 次,例如 `a{3}` 可以匹配恰好三个连续的 "a"。 - `{n,}`:匹配前面的元素至少 n 次,例如 `a{2,}` 可以匹配至少两个连续的 "a"。 - `{n,m}`:匹配前面的元素至少 n 次但不超过 m 次,例如 `a{2,4}` 可以匹配两到四个连续的 "a"。 3. 特殊字符: - `\d`:匹配任意数字字符。 - `\D`:匹配任意非数字字符。 - `\w`:匹配任意字母、数字、下划线字符。 - `\W`:匹配任意非字母、数字、下划线字符。 - `\s`:匹配任意空白字符。 - `\S`:匹配任意非空白字符。 这只是正则表达式基本用法,还有很多其他功能和语法可以进行高级匹配和操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值