目录
前言
一、什么是正则表达式
二、元字符
三、数量限定符
五、贪婪匹配和惰性匹配
5.1 惰性匹配 .*/p>
5.2 贪婪匹配 .*
六、不同语言的正则表达式
6.1 Python示例
6.2 C#示例
6.3 Golang示例
总结
写在后面
前言
当我们在通过爬虫抓取 页数据的时候,请求回来的 页数据其实是一个很长很长的字符串。
而整个 页里面的内容并不全都是我们想要的,我们可能要的只是其中的一些字段。这个时候我们在字符匹配的时候就会用到正则表达式。
或者当我们前端页面要对一些输入框输入的内容进行校验时(比如手机 码,身份证 ),我们也会用到正则表达式。
当我们想要对于特定的一类字符串进行替换的时候,我们也会用到正则表达式
一、什么是正则表达式
前面说了那么多,那什么是正则表达式呢则表达式,又叫做规则表达式(Regular Expression,在代码中常简写为regex、regexp或RE)
正则表达式的作用,说通俗一点就是可以在已有的字符串上面检查看看有没有符合要求的子字符串
正则优点:速度快、效率高、准确性高
正则缺点:新手上手难度有点高
正则表达式并不是属于某种特定的计算机语言,它应该算作是一种字符串框架,在很多中语言都有其对应的实现方法。
接下来咱们介绍一下关于正则表达式的几个概念
二、元字符
觉有固定含义的字符,每个元字符就只能匹配一个字符
常用的元字符
字符
描述
.
匹配除了换行符以外的任意字符
w
匹配字符或者数字或者下划线。(等价于’[A-Za-z0-9_]’)
s
匹配任意的空白符。(等价于 [ ])
d
匹配数字。(等价于 [0-9])
匹配一个换行符
匹配一个制表符
^
匹配字符串的开始
$
匹配字符串的结尾
W
匹配非字符或数字或下划线。(跟w的作用相反,等价于 ‘[^A-Za-z0-9_]’)
D
匹配非数字。(跟d的作用相反,等价于 [^0-9])
S
匹配非空白符。(跟s的作用相反,等价于 [^ ])
a|b
匹配字符a或字符b
[…]
匹配字符组中的字符
[^…]
匹配除了字符组中字符的所有字符
三、数量限定符
量词,这个是用于控制元字符出现的次数
字符
描述
*
重复零次或更多次
重复一次或更多次
重复零次或一次
{n}
重复n次
{n,}
重复n次或更多次
{n,m}
重复n到m次
四、正则匹配实战
讲了那么多,我们进行实战,我们可以通过一些在线的表达式工具进行测试
正则表达式在线测试 | 菜鸟工具
在线正则表达式测试
接下来,我们对于下面这段话进行一个正则筛选,
的手机 是:12110120119,的电话是:020-00000000
的博客是https://blog.csdn.net/zhh763984017
首先我们要找到我的电话 码,我们都知道,手机 码是11位的,所以我们可以用d{11}来进行匹配
这样子看似能够把 址都匹配出来,但是其实也是有bug的,就是上面这个链接匹配必须保证你的url 址后面没有跟着其他的字符。否则用上面的匹配规则还是有问题的
如下图,我在链接后面加了东西
5.2 贪婪匹配 .*
如果使用贪婪匹配的话,会怎么样呢会贪婪的找到长度最长的,符合开头字符是【攻】结尾是【玉】的字符串,也就出现了下面的“的手机 是:12110120119,”。这么长的字符串
通过go语言内置的regexp库,我们也可以实现正则表达式
这里只是举例了三种编程语言的正则表达式的实现,在其他编程语言,如C++、js、java等语言都有其对应的实现方式。包括在咱们的linux命令行,通过grep也可以实现对于命令行输出结果进行正则匹配。
总结
写在后面
如果有想看的内容,也可以在博文底部评论,我会整理出来给到大家~
文章知识点与官方知识档案匹配,可进一步学习相关知识Vue入门技能树首页概览23109 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!