前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >正则表达式有多难啊?一篇就教你学会啦

正则表达式有多难啊?一篇就教你学会啦

作者头像
用户10002156
发布2023-08-07 10:37:59
2010
发布2023-08-07 10:37:59
举报
文章被收录于专栏:生活处处有BUG

正则表达式(regular expression)是一种字符串匹配模式或者规则,它可以用来检索、替换那些符合特定规则的文本。正则表达式几乎适用于所有编程语言,无论是前端语言 JavaScript,还是诸如许多后端语言,比如 Python、Java、C# 等,这些语言都提供了相应的函数、模块来支持正则表达式,比如 Python 的 re 模块就提供了正则表达式的常用方法。

在使用 Python 编写爬虫的过程中,re 模块通常做为一种解析方法来使用。通过审查网页元素来获取网页的大体结构,然后使用解析模块来提取你想要的网页信息,最终实现数据的抓取。本节对正则表达式基本语法做简单讲解。

注意:学习本节知识之前,您应该已经掌握了正则表达式的使用方法。

正则表达式元字符

下表列出了常用的正则表达式元字符:

1) 元字符

元字符

匹配内容

.

匹配除换行符以外的任意字符

\w

匹配所有普通字符(数字、字母或下划线)

\s

匹配任意的空白符

\d

匹配数字

\n

匹配一个换行符

\t

匹配一个制表符

\b

匹配一个单词的结尾

^

匹配字符串的开始位置

$

匹配字符串的结尾位置

\W

匹配非字母或数字或下划线

\D

匹配非数字

\S

匹配非空白符

a|b

匹配字符 a 或字符 b

()

正则表达式分组所用符号,匹配括号内的表达式,表示一个组。

[...]

匹配字符组中的字符

[^...]

匹配除了字符组中字符的所有字符

2) 量词

量词

用法说明

*

重复零次或者更多次

+

重复一次或者更多次

重复0次或者一次

{n}

重复n次

{n,}

重复n次或者更多次

{n,m}

重复n到m次

3) 字符组

有时也会出现各种字符组成的字符组,这在正则表达式中使用[]表示,如下所示:

正则

待匹配字符

匹配结果

说明

[0123456789]

8

True

在一个字符组里枚举所有字符,字符组里的任意一个字符 和"待匹配字符"相同都视为可以匹配。

[0123456789]

a

False

由于字符组中没有 "a" 字符,所以不能匹配。

[0-9]

7

True

也可以用-表示范围,[0-9] 就和 [0123456789] 是一个意思。

[a-z]

s

True

同样的如果要匹配所有的小写字母,直接用 [a-z] 就可以表示。

[A-Z]

B

True

[A-Z] 就表示所有的大写字母。

[0-9a-fA-F]

e

True

可以匹配数字,大小写形式的 a~f,用来验证十六进制字符。

贪婪模式非贪婪模式

正则表达式默认为贪婪匹配,也就是尽可能多的向后匹配字符,比如 {n,m} 表示匹配前面的内容出现 n 到 m 次(n 小于 m),在贪婪模式下,首先以匹配 m 次为目标,而在非贪婪模式是尽可能少的向后匹配内容,也就是说匹配 n 次即可。

贪婪模式转换为非贪婪模式的方法很简单,在元字符后添加“?”即可实现,如下所示:

元字符(贪婪模式)

非贪婪模式

*

*?

+

+?

??

{n,m}

{n,m}?

正则表达式转义

如果使用正则表达式匹配特殊字符时,则需要在字符前加\表示转意。常见的特殊字符如下:

代码语言:javascript
复制
* + ? ^ $ [] () {} | \
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生活处处有BUG 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 正则表达式元字符
    • 1) 元字符
      • 2) 量词
        • 3) 字符组
        • 贪婪模式非贪婪模式
        • 正则表达式转义
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档