正则表达式学习笔记(1)(字符匹配)

目录

简介

常用字符及其说明

常用字符匹配

空白元字符

重复匹配

基础进阶



简介

 正则表达式(regular expression,简称regex)是一些用来匹配和处理文本的字符串。正则表达式语言并不是一种完备的语言,他是内置于其他语或软件产品里的“迷你”语言。正则表达式的使用无非两种情况:一种是查找特定的信息(搜索),另一种是查找并编辑特定的信息(替换)。学习正则表达式对我们理解爬虫很有帮助。本文是学习美国知名技术作家Ben Forta编写的《Sam Teach Yourself Regular Expression in 10 Minutes》的中文翻译版《正则表达式必知必会》的学习笔记。书中提供的正则表达式测试工具的链接如下:http://www.forta.com/books/0672325667/.


常用字符及其说明

字符说明用法举例
.  可以匹配任何单个的字符(除了换行符) 
[]  用来定义字符集合,字符集合中可以使用连字符-来简化字符区间的定义, 连字符按照ASCII码顺序来计算区间

[Aa]表示匹配文本中的A或a一次

[0123456789abcd]可简化为[0-9a-d]

^取非字符 它作用于给定的字符集合里所有字符,而不是紧跟其后的一个字符[^0-9a-z]表示不匹配数字字符和小写字母字符
转义字符,任何一个元字符都可以通过在其前加一个\将其转义,配对的元字符不用做元字符时必须转义如[],有时候喜欢把转义字符加上字符集合 [\n]增加代码的可读性

\.表示.本身

\\  表示\本身

用法示例:

匹配文本正则表达式匹配结果说明
cat cap Cam Catca.cat cap Cam Cat匹配ca连接任意一个字符的字符串
cat cap Cam Cat[Cc]a.cat cap Cam Cat匹配时c不分大小写,即在匹配时选取C和c中的一个
a b c 1 2 3 4 5[^1-4]a b c 1 2 3 4 5匹配时不匹配1-4这几个数字
cat[]125\[\]cat[]125将[ 和]转义,否则不能够匹配到

常用字符匹配

正则表达式匹配对象等价表达式
\d数字[0-9]
\D非数字[^0-9] 
\w字母和数字或下划线[a-zA-Z0-9_]
\W非字母和数字或下划线[^a-zA-Z0-9_]
\s 空白字符[\f\n\r\t\v]  ([\b] 除外)
\S非空白字符[^\f\n\r\t\v]

用法示例:

匹配文本正则表达式匹配结果说明
abc123def\d\d\dabc123def匹配三个连续的数字字符
abc123def\D\D\Dabc123def匹配三个连续的不是数字的字符
abc-+defg\w\w\wabc_+defg匹配四个连续的字母、数字或下划线
abc_+defg\Wabc_+defg匹配一个非字母和数字或下划线
abc def gh\sabc def gh匹配到空格字符(这里没法显示)
abc def gh\S\S\Sabc def gh匹配三个连续的非空白字符

空白元字符

正则表达式匹配对象
\n 换行符
\r 回车符
\t 制表符(Tab)
\v垂直制表符
\f换页符
[\b]回退键 Backspace
\r\n匹配一个 回车+换行  组合 (windows系统下)

重复匹配

元字符说明用法举例及说明
+匹配至少一个或者多个字符,给字符或者字符集合加上+的后缀(放在字符集合的后面),表示匹配同一个字符的多次重复

\w+     表示多次(至少一次)匹配字母和数字或下划线

[01]+  表示多次匹配(至少一次)0或1

*匹配一个字符连续出现零次或多次的情况用法同+,但不同的是匹配的字符可有可无,可以理解为在*前面的字符是可选的
匹配一个字符的零次或者一次出现 

https?   表示s可以出现0或1次,它的匹配对象是https或http

 

匹配文本正则表达式匹配结果说明
abc+123@345\d+abc+123@345匹配多个(至少一个)连续的数字字符
 * 用法同+,不同的就是匹配的字符可以不出现

https://www.bilibili.com

http://www.bilibili.com

https?

https://www.bilibili.com

http://www.bilibili.com

s后加?表示s可以出现0或1次


注:[0-9+]表示数字0-9和+的构成的字符集合(类似的还有.)。即在字符集合中,+表示加号本身,而不是重复匹配的元字符。

匹配重复次数
如果想给匹配的重复次数设定一个精确值,在{}加上确定的数字   

匹配文本正则表达式等价表达式匹配结果说明
abc+123@345\d{3}\d\d\dabc+123@345表示模式里前一个字符或字符集合(这里是数字)必须出现3次才算是一个匹配


设定区间

匹配文本举例匹配结果说明
abc+12@3345-245\d{2,4}abc+12@3345-245表示数字字符至少重复两次,最多重复四次才算是一个匹配
abc+12@3345-245\d{3,}abc+12@3345-245表示数字字符至少重复3次才算是一个匹配

 

贪婪型懒惰型

贪婪型的元字符,它们在匹配时往往是多多益善。
懒惰型(非贪婪型)元字符是在贪婪型其后加上?

贪婪型元字符懒惰型元字符
**?
++?
{n,}{n,}?

用法示例:

类型匹配文本正则表达式匹配结果说明
贪婪型<h1>mytest</h1>and<h1>ok</h1><h1>.*</h1><h1>mytest</h1>and<h1>ok</h1>.*尽可能多地匹配,因此匹配到了第二个</h1>
懒惰型<h1>mytest</h1>and<h1>ok</h1><h1>.*?</h1><h1>mytest</h1>and<h1>ok</h1>*尽可能少地匹配,因此匹配到了第一个</h1>

基础进阶


基础进阶链接:https://blog.csdn.net/Bei_xifen/article/details/82557614

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值