根据百度百科的解释,正则表达式的概念是:对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
emmmm,看完这一大堆文字,表示好晕哦,还是不能理解啊!
但是,正则表达式对数据处理来说非常重要!数据的清洗或网页爬虫中解析数据都用得上它。
因为它有以下优点:
(1)可以简化代码,实现起来更加简便;
(2)处理字符串的时候更容易理解;
(3)其速度比自己写逻辑代码要快。
(⊙o⊙)…有什么通俗易懂的解释可以让新手快速掌握这个名词的精髓呢???
简单来说,正则表达式就是设定一个字符串规则,然后帮助我们判断某个字符串是不是符合这个模式,也可以根据该规则提取我们需要的数据。
这么解释,是不是容易理解多了,但是没有事例结合还是一知半解,下面让我们利用正则表达式做一个简单的演示:
正则表达式语法
^ 匹配字符串开头
$ 匹配字符串末尾
例如,'^abc':匹配以'abc'开头的字符串;'abc$':匹配以'abc'结尾的字符串;
re* 匹配0个或多个的字符
re 匹配1个或多个的字符
re? 匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式
例如,'ab*':匹配字符串a和0个或多个b组成的字符串('a'、'ab'、'abb'......)
'ab ':匹配字符串a和1个或多个b组成的字符串('ab'、'abb'......)
'ab?':匹配字符串a和0个或1个b组成的字符串
. 匹配任意字符串,除了换行符
[abc] 匹配单个的字符a或b或c
[^abc] 匹配除了a,b,c之外的字符
\w 匹配字母数字及下划线
\W 匹配非字母数字及下划线
\s 匹配任意空白字符,等价于[\t\n\r\f]
\S 匹配任意非空字符
\d 匹配任意数字
\D 匹配任意非数字
。。。
正则表达式实例
看了这么多的语法,头晕脑胀,到底怎么才能构建一个模式来匹配字符串呢?比如,现在要求我们从一大堆字符串中提取出需要的数据:邮箱地址。这该怎么办??
很显然,邮箱地址一般是这样的:
xiaobai@qq.com
根据前面提到的语法,我们可以定义这样一个规则:
^\w @\w \.[com,cn,net]{1,3}$
其中\w表示单词字符,等价于[A-Za-z0-9_],匹配字母数字及下划线
表示匹配1个或多个的字符
\w 代表匹配字符[A-Za-z0-9_]一次或多次的组合字符串
\.的含义是将'.'转义,因为'.'本身也是语法
{1,3}表示匹配前一个字符1-3次,至少1次,至多3次
[com,cn,net]字符集,表示匹配其中任意一个字符
下面用Python代码简单看一下演示,首先导入正则表达式的库re模块,再定义字符串规则pattern,如果匹配成功,则输出YES,反之则没有输出。
具体的Python正则表达式大法,还听下回分解!
联系客服