正则表达式入门基础

一、概念

正则表达式,(英语: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

参考文献

  1. 菜鸟教程.正则表达式[OL]http://www.runoob.com/regexp/regexp-tutorial.html
  2. 小象学院.Python爬虫工程师·初级[OL] http://www.chinahadoop.cn,2019
  3. deerchao.正则表达式30分钟入门教程[OL]http://www.deerchao.net/tutorials/regex/regex.htm
  4. 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

发表评论

电子邮件地址不会被公开。 必填项已用*标注