无论你使用的是Java、Python、Perl、PHP、GO 还是 Shell,正则表达式是学习主流编程语言几乎绕不开的话题。有了它,就能帮你快速定位到符合筛选条件的文本内容。
但对于初学者来说,有两座摆在面前的 “大山”:
- 正则表达式包含的符号种类非常多,如果只是死记硬背,学习起来会非常痛苦;
- 单独介绍正则表达式的中文图书资源非常少,而且存在介绍混乱的问题,不利于系统学习。
现在 GitHub 上的有个 2.9 万星的项目 learn-regex 解决了初学者的困难。
最近这个教程刚完成了汉化工作,还附有在线练习,帮助初学者快速入门正则表达式。
https://github.com/ziishaned/learn-regex
什么是正则表达式
正则表达式是一组由字母和符号组成的特殊文本, 它可以用来从文本中找出满足你想要的格式的句子。
比如我们在网站中看到对用户名规则做出了如下限制:只能包含小写字母、数字、下划线和连字符,并且限制用户名长度在 3~15 个字符之间,如何验证一个用户名是否符合规则呢 ?我们使用以下正则表达式:
//用户名正则,4到16位(字母,数字,下划线,减号)
var uPattern = /^[a-zA-Z0-9_-]{4,16}$/;
//输出 true
console.log(uPattern.test("iFat3"));
项目内容
learn-regex 整个教程分为 6 节,内容比较简短,很快就能阅读完。
1. 基本匹配
2. 元字符
2.1 点运算符 .
2.2 字符集
2.2.1 否定字符集
2.3 重复次数
2.3.1 * 号
2.3.2 + 号
2.3.3 ? 号
2.4 {} 号
2.5 (...) 特征标群
2.6 | 或运算符
2.7 转码特殊字符
2.8 锚点
2.8.1 ^ 号
2.8.2 $ 号
3. 简写字符集
4. 零宽度断言(前后预查)
4.1 ?=... 正先行断言
4.2 ?!... 负先行断言
4.3 ?<= ... 正后发断言
4.4 ?<!... 负后发断言
5. 标志
5.1 忽略大小写 (Case Insensitive)
5.2 全局搜索 (Global search)
5.3 多行修饰符 (Multiline)
教程从最简单的正则表达式入手,紧接着又介绍了核心内容元字符,然后由简到难介绍正则表达式的各种用法。
在线练习
如果你以为 learn-regex 只是个简单的汉化教程就大错特错了。learn-regex 之所以能获得 2.4 万星的高赞,还有个重要原因就是它提供了在线练习,直观地展示了正则表达式的匹配方式(真的炒鸡好用ヾ(≧▽≦*)o )。
比如 (T|t)he 是如何匹配 The fat cat sat on the mat. 这句话中的几个单词的:
我们可以直观地看到以 T、h 开头并且紧跟 he 的单词都能很正则表达式匹配。
网页的右侧还会给出相应的解释:
如此操作,让人感觉要比枯燥的文字解释生动许多,大家不妨试玩一下。
我的学习备忘
点运算符 .
匹配任意单个字符,不匹配换行符,.xx
匹配一个任意字符后面跟着是x和x的字符串.
表达式: /.
匹配到:The car parked in the garage.
表达式: /.ge
匹配到: The car parked in the garage
.
字符集
字符集也叫做字符类. 方括号用来指定一个字符集
. 在方括号中使用连字符来指定字符集的范围
. 在方括号中的字符集不关心顺序.
表达式: /[Tt] he
匹配到:The
car parked inthe
garage.表达式: /[a-z]e
匹配到: The
car parke
d in the
garage
.
方括号的句号就表示句号. 表达式 ar[.] 匹配 ar.字符串
表达式: /ge[.]
匹配到: The car parked in the garage.
2 条评论
每天都能在博主这里学到新东西,太棒了!|´・ω・)ノ
现在已经有限定专业的公司了,不过这种就算是在将来也只是少数情况,除非这行人过剩的已经到了必须看专业才能刷掉大部分人,并且剩下的本专业的也都过剩一定能招到合适的