没有合适的资源?快使用搜索试试~ 我知道了~
正则表达式随心记.docx
资源推荐
资源详情
资源评论
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![application/x-zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/release/download_crawler_static/89427044/bg1.jpg)
正则表达式
正则表达式称规则表达式,是对字符串操作的一种逻辑公式,它使用特定字符或组合来组
成一个“规则字符串”,可以形成对字符串的一种过滤逻辑。
逻辑:指思维的规律、理清事物的本身规律,包括思维规律和客观规律。
正则表达式的具体语法和功能可能因编程语言、数据库或开发环境的不同而有所差异
^$的是否添加。
在正则表达式中,^和$是特殊字符,分别表示匹配字符串的开始和结束位置。
MULTILINE 标志(通常简写为 m)是正则表达式中的一个标志,它主要用于控制正则表达
式的匹配行为,特别是在多行文本字符串中的匹配。
MULTILINE 标志的详细解释:
1. 标志作用
� 允许多行匹配:当设置 MULTILINE 标志时,正则表达式中的^和$元字符会分别匹
配每一行的开头和结尾,在多行文本中,实现跨行的匹配。而不仅仅一个字符串的
开头和结尾。
2. 标志使用
� 在正则表达式中设置:在大多数支持正则表达式的编程语言中,你可以通过在编译
正则表达式时传递一个包含 MULTILINE 标志的参数来启用它。例如,在 Python 中,
你可以使用 re.compile(pattern, re.MULTILINE)来编译一个支持多行匹配的正则表达
式。
� 在模式字符串中嵌入:有些正则表达式引擎允许你在模式字符串中直接嵌入标志。
然而,直接在字符串中嵌入 MULTILINE 标志的语法因语言而异。例如,在某些引
擎中,你可以通过在模式字符串的开头添加(?m)来启用 MULTILINE 标志。
3. 示例
假设我们有一个包含多行文本的字符串,并且我们想要匹配每一行的开头部分。如果没有
设置 MULTILINE 标志,那么正则表达式^Hello 只会匹配整个字符串开头的“Hello”。但是,
如果设置了 MULTILINE 标志,那么它将会匹配每一行开头的“Hello”。
默认行为:正则表达式引擎中,MULTILINE 标志是可选的,但默认是关闭的。
^:匹配输入字符串的开始位置。如果设置了 MULTILINE 标志,它也会匹配每行的开始位
置。
![](https://csdnimg.cn/release/download_crawler_static/89427044/bg2.jpg)
$:匹配输入字符串的结束位置。如果设置了 MULTILINE 标志,它也会匹配每行的结束位
置。
不是所有的正则表达式都需要匹配整个字符串。如果只想在字符串中查找与模式匹配的某
些子串,不用管它出现在字符串的什么位置。在这种情况下,我们不需要使用^和$。
然而,如果你只想确保模式匹配整个字符串,或者确保模式出现在字符串的开始或结束位
置,那么你就应该使用^和$。
下面是一个使用 Python 和其 re 模块来演示 MULTILINE(通常简写为 re.MULTILINE 或 re.M)
标志的代码例子。这个例子中,我们将匹配一个多行字符串中每一行的开头“Hello”:
import re
# 多行字符串
text = """
Hello, this is the first line.
This is another line.
Hello, this is the third line.
And this is the last line.
"""
# 编译正则表达式,使用 MULTILINE 标志
pattern = re.compile('^Hello', re.MULTILINE)
# 查找所有匹配项
matches = pattern.findall(text)
# 打印匹配项
for match in matches:
print(match)
:
Hello
Hello
这是因为正则表达式^Hello 在设置了 MULTILINE 标志后,可以匹配每一行开头的“Hello”。
如果不设置 MULTILINE 标志,^只会匹配整个字符串的开头,因此只能找到第一个“Hello”。
注意,在 re.compile()函数中,我们使用了 re.MULTILINE(或简写为 re.M)作为第二个参数
来启用 MULTILINE 标志。在正则表达式字符串本身中,我们并没有嵌入任何特殊的标志字
符,因为在这个例子中,我们是通过 re.compile()函数的参数来设置标志的。然而,有些正
则表达式引擎(尽管不是 Python 的 re 模块)允许你在模式字符串中使用(?m)来嵌入
MULTILINE 标志。
![](https://csdnimg.cn/release/download_crawler_static/89427044/bg3.jpg)
在 Python 中, r 前缀用于字符串字面量时
r 前缀用于字符串字面量时,它表示这是一个“原始字符串”。原始字符串的主要特点是反斜
杠(\)在字符串中不会被当作转义字符。
在正则表达式中,反斜杠是一个特殊字符,它用来引入转义序列,如\n(换行符)、\t
(制表符)等。然而,在 Python 的普通字符串中,反斜杠本身也是一个转义字符。因此,
当你在 Python 的字符串中编写正则表达式时,如果你需要用到反斜杠,你需要使用两个反
斜杠来表示一个反斜杠,例如\\d 来表示正则表达式中的\d(匹配任何数字字符)。
使用原始字符串可以避免这种双重转义的问题。在原始字符串中,你可以直接写\d 来表示
正则表达式中的数字字符类,而不需要写成\\d。
原始字符串
在 Python 中,原始字符串通过在字符串前加上 r 或 R 前缀来定义。在原始字符串中,反斜
杠\被视为普通字符,而不是转义字符。这意味着你可以直接写入\,而不需要担心它被解
释为转义序列。
在正则表达式中,原始字符串非常有用,因为正则表达式本身包含许多反斜杠开头的特殊
字符和序列(如\d 表示数字,\s 表示空白字符等)。使用原始字符串可以避免对每一个反
斜杠进行转义,使正则表达式更易读和编写。
字面量字符串
字面量字符串是 Python 中的普通字符串,不使用 r 或 R 前缀。在字面量字符串中,反斜杠
\是一个转义字符,用于表示特殊字符或序列。因此,如果你想在正则表达式中使用一个反
斜杠,你需要在字符串中使用两个反斜杠\\来表示。
示例
假设我们要编写一个正则表达式来匹配以空白字符开头的“Hello”:
使用原始字符串
import re
pattern_raw = re.compile(r'^\s*Hello')
# 这里 \s 直接表示空白字符,无需转义
使用字面量字符串
import re
pattern_literal = re.compile('^\\s*Hello')
# 这里 \\s 表示空白字符,因为 \ 在字符串中是转义字符
在上面的示例中,两个正则表达式的作用是相同的,但使用原始字符串可以使代码更简洁、
更易读。
总结
![](https://csdnimg.cn/release/download_crawler_static/89427044/bg4.jpg)
� 原始字符串:在字符串前加上 r 或 R 前缀,反斜杠\被视为普通字符,无需转义。
� 字面量字符串:普通的 Python 字符串,反斜杠\是转义字符,需要使用\\来表示实
际的反斜杠。
正则表达式的分类
1. 基础正则表达式:
o 这是最简单的正则表达式类型。
o 它支持常用的元字符和语法,如.、*、+、?、^、$等,但不支持转义字符
和特殊字符类。
2. 扩展正则表达式:
o 在基础正则表达式的基础上进行了扩展。
o 支持更多的元字符和语法,如{n}、{n,}、{n,m}、\d、\D、\s、\S 等。
o 还支持管道符号(|)和捕获组。
3. 全面正则表达式:
o 也称为完全正则表达式。
o 是最全面的正则表达式类型之一,提供了全面的功能和特性。
使用正则表达
正则表达式的基本语法
正则表达式由普通字符(如字母和数字)和特殊字符(称为元字符)组成。元字符具有式
特殊的意义,匹配特定的字符。
� 元字符:如 .(匹配任意字符,除了换行符)、*(匹配前面的字符 0 次或多次)、
+(匹配前面的字符 1 次或多次)、?(匹配前面的字符 0 次或 1 次)等。
� 边界匹配符:如 ^(匹配字符串的开始)、$(匹配字符串的结束)。
� 字符集:使用 [ ] 定义字符集,例如 [a-z] 匹配任意小写字母。
编写正则表达式
根据分析的结果,编写一个或多个正则表达式来匹配目标数据。例如,一个简单的电子邮
件地址匹配正则表达式可能是:
Regex 是 Regular Expression 的缩写,中文意思是正则表达式,
![](https://csdnimg.cn/release/download_crawler_static/89427044/bg5.jpg)
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
1. ^:
o 匹配输入字符串的开始位置。确保整个字符串都符合后面的模式。
2. [a-zA-Z0-9._%+-]+:
o 这是一个字符集(也称为字符类),匹配方括号内的任意一个字符。
o a-z:匹配任何小写字母。
o A-Z:匹配任何大写字母。
o 0-9:匹配任何数字。
o .、_、%、+、-:匹配这些字符本身。
o +:表示前面的字符集可以出现一次或多次。所以,[a-zA-Z0-9._%+-]+ 会
匹配一个或多个由这些字符组成的连续字符串,这通常是电子邮件地址的
用户名部分。
在正则表达式中,+ 是一个量词(quantifier),它指定前面的元素(可以是一个字符、一个字符集、一个
组等)可以出现一次或多次。这意味着该元素可以连续地重复一次、两次、三次,或者更多次。
以 [a-zA-Z0-9._%+-]+ 为例,这个表达式定义了一个字符集,该字符集包含了大小写字母(a-z 和 A-Z)、
数字(0-9)、点(.)、下划线(_)、百分号(%)、加号(+)和短横线(-)。
紧跟在这个字符集后面的 + 量词表示:这个字符集中的任何一个字符(或这些字符的组合)可以出现一
次或多次,形成一个连续的字符串。
具体来说:
� a:匹配字母 "a"
� a+:匹配一个或多个连续的 "a" 字符,如 "a", "aa", "aaa" 等
� [a-z]+:匹配一个或多个连续的小写字母,如 "a", "hello", "example" 等
� [a-zA-Z0-9._%+-]+:匹配一个或多个由上述字符集中的字符组成的连续字符串。这通常是电子
邮件地址的用户名部分,因为用户名可以由这些字符组成,并且这些字符可以连续地出现一次或
多次。
举个例子,[a-zA-Z0-9._%+-]+ 可以匹配以下字符串:
� john(只包含字母)
� john123(包含字母和数字)
� john_doe(包含字母和下划线)
� john.doe@example.com(注意这里整个字符串不会完全匹配,因为还包含了其他字符如 @ 和 .,
但 john.doe 部分会匹配这个正则表达式)
3. @:
o 匹配电子邮件地址中的“@”字符。
4. [a--zAZ0-9.-]+:
o 又一个字符集,但这次用于匹配电子邮件地址的域名部分。注意这里也包
含了.字符,用来分隔子域名。
o 同样,+ 表示前面的字符集可以出现一次或多次。
5. \.:
剩余56页未读,继续阅读
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/c734338bfca449b883278be2824f9442_qinsewul.jpg!1)
真的看不清
- 粉丝: 1
- 资源: 2
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)