正则表达式学习笔记
前言
之前学习其他知识时,经常见到正则表达式,一开始不以为然,后来见得多了,觉得这东西肯定挺叼的,有必要学一学了,因此从网上找了一些资料开始学习,去google搜一下,教程倒是蛮多的,但是不知道哪个易学些,走马观花式的看了一段时间,基本掌握了,但是学的不系统,有一天到张子阳的一篇博文,觉得写的很好,就去看了看他的主页,发现子阳兄也写过正则表达式教程,怀着对子阳兄的崇敬之情,看的很带劲呢,一下午就看完了,感觉棒棒的。
正则表达式是什么
它是用来准确查找文本的,或返回查找结果,或进行内容替换;反过来,它可以对输入的信息进行格式验证。
正则表达式学什么
正则表达式可以当一个工具来学,基本的、常用的会用即可,不常用的学了也会忘掉,本着这个目的,我将从用途不同对正则表达式的知识进行分类。
简单匹配
匹配单个字符
重点学习“.”、“?”、“[ ]”、“\s”、“\d”、“\w”和“\”
- “.”:匹配任意单个字符
- “?”:匹配0个或1个特定字符(它的前一个字符)
- “[ ]”:匹配几个字符中的一个字符
- “\s”:匹配空字符,包括空格、Tab、回车符、换行符,相当于[\f\n\r\t\v]
- “\d”:匹配单个数字,相当于[0-9]
- “\w”:匹配单个大小写字母、数字、下划线,相当于[a-zA-Z0-9_]
- “\”:转义字符,匹配有特殊意义的字符,如“.”或“?”
此外,\s\d\w的反义匹配是\S\D\W,也就是匹配非空字符、非数字字符和非【大小写字母、数字、下划线】字符
学会这些,基本的查找功能就可以搞定啦。
例子后续补充
中级匹配
匹配多个字符
重点学习“+”、“*”、“^”、“$”、“{ }”、“\b”
- “+”:匹配1个或多个特定字符(它的前一个字符)
- “*”:匹配0个或多个特定字符(它的前一个字符)
- “^”:匹配文本首,用在“[ ]”中代表匹配反义词,如[^0-9]匹配非数字
- “$”:匹配文本末
- “{ }”:匹配指定数目的特定字符(它的前一个字符)
- “\b”:匹配字符边界(分割单词的边界,下划线除外)
- “\B”:与“\b”相反,匹配【非单词】边界(也就是字母或汉字)
例子后续补充
高级匹配
含有子模式和惰性模式的匹配
重点学习“( )”、“|”、“贪婪匹配与惰性匹配”
- “( )”:将括号内的字符串当作一个整体来匹配,看作一个字符,如(good),文本中包含“good”时才匹配,“god”和“ood”都不会匹配到
- “|”:“或”匹配,匹配两个正则表达式中的任意一个,如“good|bad”,匹配包含good或bad,也可以用在“( )”中
- 贪婪匹配:默认匹配模式。它会匹配尽可能多的字符。它首先看整个字符串,如果不匹配,对字符串进行收缩;遇到可能匹配的文本,停止收缩,对文本进行扩展,当发现匹配的文本时,它不着急将该匹配保存到匹配集合中,而是对文本继续扩展,直到无法继续匹配 或者 扩展完整个字符串,然后将前面最后一个符合匹配的文本(也是最长的)保存起来到匹配集合中。所以说它是贪婪的。
- 惰性匹配:它会匹配尽可能少的字符,它从第一个字符开始找起,一旦符合条件,立刻保存到匹配集合中,然后继续进行查找。所以说它是懒惰的。
下面是贪婪匹配与惰性匹配的字符差别:
例子后续补充
后记
这篇文章是我学习这篇教程的总结与思路整理,总结的也不太好,希望看到它的人可以从中学到,有什么问题欢迎讨论~