您现在的位置是:首页 > 博文答疑 > 正则表达式 快速掌握的方法博文答疑
正则表达式 快速掌握的方法
Leo2023-05-26【9】
简介正则表达式 快速掌握的方法
大家常常需要使用到正则表达是,但是正则表达式的如果不长时间使用,确实不容易记住。那么这里有一个推荐的学习方法,可以帮助我们快速掌握正则。
科普 什么是正则表达式:
正则是一个文本处理工具:
1.校验数据的有效性
2.从文本中提取内容
3.文本内容替换
如何快速记住元字符 是快速掌握正则的关键。我们需要把元字符分分类:
- 基础、
- 空白符
- 量词
- 范围
- 边界
1.基础 | . 任意字符(换行符除外) |
\d 任意数字 \D任意非数字 | |
\w 任意数字字母下划线 \W 数字字母下划线以外的任意字符 | |
\s 任意空白符 \S任意非空白符 |
2.空白符 | \r 回车符 |
\n 换行符 | |
\f 换页符 | |
\t 制表符 | |
\v 垂直制表符 |
3.量词 | * 含义: 0 到多次 |
+ 含义: 1到多次 | |
? 含义:0到1次,如 colou?r | |
{m}含义:出现m次 | |
{m,n} 含义:m到n次 {,n} 其中m不写代表0,至多n次 {m,} 其中n不写代表无穷大,至少m次 |
4.范围 | | 或, 如 ab|bc 代表 ab 或bc |
[...] 多选一, 括号中任意单个元素 | |
[a-z]匹配a 到 z 之间任意单个元素(按ASCII表,包含a, z) | |
[^...] 取反, 不能是括号中的任意单个元素 |
5.边界 | ^ 匹配行的开始;多行模式时,可以匹配任意行开头 |
$ 匹配行接触;多行模式时,可以匹配任意行结尾 | |
\b 匹配单词边界 | |
\A 仅匹配整个字符串的开始,不仅支持多行模式 | |
\Z 仅匹配整个字符串的结束,不支持多行模式 |
匹配还有一个原则:贪婪&非贪婪
- 贪婪:表示次数的两次,模式是贪婪的;默认尽可能多的去匹配
- 非贪婪: “数量”元字符后加 ? 找出长度最小切满足要求的
例子1(贪婪匹配):
正则:“.+”
测试结果: "the little cat" is a toy, it looks "a little bad".
例子2(非贪婪匹配):
正则:“.+?”
测试结果: "the little cat" is a toy, it looks "a little bad".
环视 | (?<=Y)X :匹配前面是Y的X |
(?<!Y)X :匹配前面不是Y的X | |
X(?=Y) :匹配后面是Y的X | |
X(?!Y) :匹配后面不是Y的X |
例子:
正则:(?<=<li>)(.+)(?=</li>)
结果:
<ul>
<li>item1</li>
<li>item2</li>
<li>item3</li>
</ul>
子组 | (正则) 将regex 保存成一个子组 |
(?P<name>正则) 命名子组,将regex 保存成名称为name的子组 | |
(?:正则) 仅分组,不保存这个子组 | |
\分组编号 重复某个子组 |
到此,学习方法就分享到这里。当然,这里这是给大家一个总结,怎么学习;以及怎么快速的记忆正则表达式。正则表达式全部内容大家也可以买书回家自己研究。不过这里推荐两个给大家:
正则表达式 – 教程 | 菜鸟教程 (runoob.com) 学会这里的知识,其实基本够用了。
regex101: build, test, and debug regex 这里是个正则的工具,大家可以在这里实验自己的表达式,当然上面也有很多例子供大家参考。
最后,出一个思考题:如何从youku网页中找出视频链接,并下载?
提示:http:/v.youku.com/v_show/.*?html 视频链接后, 使用 you-get 工具进行下载。
微信关注公众号二维码,可以获得更多资料。