根据百度百科的解释,正则表达式的概念是:对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 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正则表达式大法,还听下回分解! |
|
来自: L罗乐 > 《Python编程知识》