一、概念
正则表达式,(英语:Regular Expression,在代码中常简写为regex、regexp或RE 。正则这个词语比较难懂,但是英文regular是规则、规律,所以就比较好理解了,就是用一个规则的表达式来寻找、替换文本。
二、用途
有的时候我们需要在文档中寻找某个字符串,或某种类型的字符串。如果简单的查找某个字符,我们用Ctrl+F就好了,如果数据量很多,或者我们需要将某一类特征的字符串都找到,那就不行了。这时候,正则表达式就派上用场了。概括几点1:
- 测试字符串内的模式。
- 替换文本
- 从字符串中提取子字符串
三、语法
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为”元字符”)组成。详细语法可参考:http://www.runoob.com/regexp/regexp-syntax.html。常用规则如下2,3:
\ | 转义符,例如\? |
^ | 字符串起始 |
$ | 字符串结束 |
* | 匹配前面子表达式0次或多次 |
+ | 匹配前面子表达式1次或多次 |
? | 匹配前面子表达式0次或1次 |
{n,m} | 匹配至少n次,最多m次 |
. | 匹配除\n之外的单个字符 |
(pattern) | 匹配并获取这个匹配,例如匹配ab(cd)e正则表达式只返回cd |
[xyz] | 字符集合,匹配任意合集里的字符 |
[^xyz] | 排除集合里的字符,不能匹配 |
\d | 匹配一个数字,等价[0-9] |
\b | 匹配单词的开始或结束 |
四、简单实例
1 – 年份匹配4。
我们来看看另外一个简单的例子——匹配二十或二十一世纪中任何有效的一年。
\b(19|20)\d{2}\b
我们使用\b
而不是^
和$
来开始和结束这个正则表达式。\b
表示单词边界,或两个单词之间的空格。这允许我们在文本块(而不是代码行)中匹配年份,这对于搜索如段落文本非常有用。
2 – 匹配时间
现在我们要定义一个正则表达式来匹配24小时格式(MM:HH,如16:59)的任何时间。
\b([01]?[0-9]|2[0-3]):([0-5]\d)\b
3 – 匹配日期
现在我们来匹配一个DAY/MONTH/YEAR
样式的日期模式。
\b(0?[1-9]|[12]\d|3[01])([\/\-])(0?[1-9]|1[012])\2(\d{4})
常用的一些正则表达式:http://www.runoob.com/regexp/regexp-syntax.html
参考文献
- 菜鸟教程.正则表达式[OL]http://www.runoob.com/regexp/regexp-tutorial.html
- 小象学院.Python爬虫工程师·初级[OL] http://www.chinahadoop.cn,2019
- deerchao.正则表达式30分钟入门教程[OL]http://www.deerchao.net/tutorials/regex/regex.htm
- Patrick Triest. YOU SHOULD LEARN REGEX[OL]https://blog.patricktriest.com/you-should-learn-regex/, 2017
译文:你应该学习正则表达式[OL] http://www.codeceo.com/article/you-should-learn-regex.html