python干货|正则表达式
正则表达式的简单介绍
正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。如果已经在其他语言里使用过正则表达式,只需要简单看一看就可以上手了。
简单来说:正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。—— [ 维基百科 ]
正则表达式的大致匹配过程是:依次拿出表达式和文本中的字符比较,如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。如果表达式中有量词或边界,这个过程会稍微有一些不同,但也是很好理解的,看下图中的示例以及自己多使用几次就能明白。
下面列出了Python支持的正则表达式元字符和语法:
(1)预定义字符集
(2)数量词
(3)边界匹配
(4)逻辑,分组
(5)特殊构造
(?iLmsux)为分组设置模式
这里的”i”, “L”, “m”, “s”, “u”, “x”,它们不匹配任何字串,而是表示对应python中re模块当中的(re.I, re.L, re.M, re.S, re.U, re.X)的6种选项。
可以在python源码中看到:
反斜杠的使用
在一般的编程语言当中,反斜杠“\”代表反转义字符,在反斜杠后面加一个字符可以表示一种特定的意思,接下来列举几个常见的转义字符:
re模块
(1)compile
在模式发生匹配之前,正则表达式模式必须编译成正则表达式对象。因此如果在比较之前提前对正则表达式模式进行编译(预编译过程),可以提高程序的运行效率,re模块的compile函数提供了对正则表达式进行编译的功能,编译后,返回一个正则表达式对象,这也是为什么一开始就介绍compile函数的意图。
(2)match和search比较
match和search最大的区别在于search在任意位置进行搜索匹配,而match必须从开头进行匹配。
(3)findall 、finditer和sub 使用
findall 和 finditer的区别在于返回对象不同,findall 返回一个列表;finditer返回一个迭代器对象。
(4)分组及group、 groups比较使用
使用()可以用来保存分组,以便于后续处理,使用group方法访问每个独立的子组以及groups()方法获取一个包含所有匹配子组的元组
(5)split
re模块的split()方法和string自带的split方法是类似的,但更为强大和灵活。下面是一个较为复杂的例子,一个用于web站点的简单解释器,用户输入城市名和州名 ,或者城市名加上ZIP码(5个数字),三者不一定全部都有。
最后
前几天有私信小编要Python的学习资料,小编整理了一些有深度的Python教程和参考资料,从入门到高级的都有,文件已经打包好了,正在学习Python的同学可以下载学习学习。文件下载方式:点击小编头像,关注后私信回复“python”即可下载。首先把代码撸起来!首先把代码撸起来!首先把代码撸起来!重要的事说三遍,哈哈。“编程是门手艺活”。什么意思?得练啊。