python 优雅的使用正则表达式 ~ 2

使用正则表达式

那些基础的理论也说了不少了现在就开始 实操 ( 不知道为啥特别喜欢这个词... ) 吧 .

上一节课说过 正则表达式也是一门语言 , 他被集成到了python当中 , 并且用 re 模块为正则表达式提供了一个接口 . 正则表达式 是用C 语言写的 , 所以效率很高 , 我们将正则表达式编译为模式对象 , 并且用他们来进行匹配 , 这也是为了提高效率 , 后面我们会经常用到 " 模式 " , 指的就是讲正则表达式

编译正则表达式 . 

正则表达式被编译为模式对象 , 该对象拥有各种方法供你操作字符串 , 如查找模式匹配或执行字符串替换 . 

>>> import re
>>> p = re.compile(‘ab*‘) # a 和 一到正无穷个b
┌──────────────────────────────────────────────────────────────┐
│ re.compile: (pattern, flags=0)                               │
│ Compile a regular expression pattern, returning a pattern ob │
│ ject.                                                        │
└──────────────────────────────────────────────────────────────┘

从上面可以看出,re.compile() 也可以接受flags参数,用于开启各种特殊功能和语法变化 .

1 >>> p = re.compile(‘ab*‘,re.IGNORECASE)

正则表达式作为一个字符串参数传给了 re.compile(). 由于正则表达式并不是 python的核心部分 , 因此没有为他提供特殊的语法支持 , 所以正则表达式只能 以字符串的形式表示 . (有些应用根本就不需要正则表达式 , 所以python社区的小伙伴们认为没有必要将其纳入python的核心 )  相反 , re 模块仅仅是作为 C 的扩展模块包含在python中 , 就像socket模块和zlib模块

正因为 \ 的强大 , 和功能的多 , 所以 \ 也有很多麻烦的地方 .

匹配字符 匹配阶段
\select 需要匹配的字符串
\\select 正则表达式需要用\\来表示\
\\\\select 不巧python也需要用\\来表示\
1*2*2 所以就用了四个\

简言之为了匹配反斜杠这个字符我们需要在字符串中使用四个反斜杠才行 , 这在正则表达式中本来 \ 久用的频繁 , 这样就更多了 . 吓人 !

有问题就有接近越方案 , 方法就是用原始字符串来表示正则表达式 . ( r‘ xxx   ‘  Do you Remember ?)

正则字符串 原始字符串
"ab*" r"ab*"
"\\\\select" r"\\select"
"\\w+\\s+\\1" r"\w+\s+\1"
python也需要用\\来表示\ 哦
时间: 2024-10-09 23:33:43

python 优雅的使用正则表达式 ~ 2的相关文章

python 优雅的使用正则表达式 ~ 1

正则表达式简介 正则表达式 , 也称谓 REs , 本质上是一个微小且高度专业化的编程语言. 他被嵌入到许多语言当中 , 例如 python 就是通过 re 模块来提供给我们使用 , 正则表达式 是通过一些规则来哦描述那些你希望匹配的字符串 .    python的 正则表达式 是通过 C语言写的 , 所以效率非常得高 ( 效率就是生命 )   python的 正则表达式 可已解决大部分的字符串匹配问题 , 但是对于有些字符串来说 ,  用正则表达式 是非常费心费力的 . 所以一小部分还需要牺牲

Python学习笔记013_正则表达式

Python中的正则表达式是通过 re 模块实现的. 通配符 .  表示除了换行以外的任何字符; 编写正则表达式时使用  r're'  , r + 正则表达式内容 >>> import re >>> >>> re.search(r'Fish.','I love FishC.com!') <_sre.SRE_Match object; span=(7, 12), match='FishC'> >>> # 如果要匹配 . 本身

python进阶十_正则表达式(一)

最近状态一直不太好,至于原因,怎么说呢,不好说,总之就是纠结中覆盖着纠结,心思完全不在点上,希望可以借助Python的学习以及博客的撰写来调整回来,有的时候回头想一想,如果真的是我自己的问题呢,以前我经常跟别人说,千万不要怀疑自己,因为很清楚一旦连自己都变的不可信,那这个世界就太疯狂了,当一遍一遍的问我,现在连我自己都快怀疑自己了,我一遍一遍的说服别人,想不到现在竟然需要自己去说服自己,何其的悲哀~ 一.正则表达式基础 1.基本概念 正则表达式是计算机科学的一个概念.正则表达式使用单个字符串来描

python re模块学习--正则表达式函数

这里主要介绍Python中常用的正则表达式处理函数.关于python中正则表达式的语法会再总结一篇博文. re.match re.match 尝试从字符串的开始匹配一个模式,如:下面的例子匹配第一个单词. 代码如下: #!/usr/bin/env python# -*- coding: utf-8 -*-import retext = "JGood is a handsome boy, he is cool, clever, and so on..."m = re.match(r&qu

python基础之 re(正则表达式)模块学习

今天学习了Python中有关正则表达式的知识.关于正则表达式的语法,不作过多解释,网上有许多学习的资料.这里主要介绍Python中常用的正则表达式处理函数. re.match re.match 尝试从字符串的开始匹配一个模式,如:下面的例子匹配第一个单词. import retext = "JGood is a handsome boy, he is cool, clever, and so on..."m = re.match(r"(\w+)\s", text)i

python学习笔记八——正则表达式

1.元字符 []-常用来指定一个字符集:[abc];[a-z] -元字符在字符集中不起作用:[akm$] -补集匹配不在区间范围内的字符:[^5] ^-匹配行首 $-匹配行尾 \-后可加不同字符以表示不同意义,也可用于取消所有元字符 \d 匹配任何十进制数,相当于[0-9] \D 匹配任何非数字字符,相当于[^0-9] \s 匹配任何空白字符,相当于[\t\n\r\f\v] \S 匹配任何非空白字符 \w 匹配任何字母数字字符 \W 匹配任何非字母数字字符 *-匹配前一个字符零次或多次 +-至少

Python3 如何优雅地使用正则表达式(详解四)

更多强大的功能 到目前为止,我们只是介绍了正则表达式的一部分功能.在这一篇中,我们会学习到一些新的元字符,然后再教大家如何使用组来获得被匹配的部分文本. 更多元字符 还有一些元字符我们没有讲到,接下来小甲鱼一一为大家讲解. 有些元字符它们不匹配任何字符,只是简单地表示成功或失败,因此这些字符也称之为零宽断言.例如 \b 表示当前位置位于一个单词的边界,但 \b 并不能改变位置.因此,零宽断言不应该被重复使用,因为 \b 并不会修改当前位置,所以 \b\b跟 \b 是没什么两样的. 小甲鱼解释:很

python开发中对正则表达式及re模块的学习

正则表达式是个很牛逼的东西,不管是在javascript,还是在Python web开发(http://www.maiziedu.com/course/python-px/)中,我们都会遇到正则表达式,虽然javascript和Python的正则表达式区别不大,但是正则表达式是Python中必不可少的一部分,所以今天就跟大家一起讨论一下python中的re模块. re模块包含对正则表达式的支持. 什么是正则:  正则表达式是可以匹配文本片段的模式.  正则表达式'Python'可以匹配'pyth

Python学习笔记(4):正则表达式

正则表达式 用法: >>>import re >>>s=r'abc' >>>re.findall(s,'abcabc') 正则语法: 元字符: . ^ $ * + ? {} [] \ | () [] 用于选择匹配 [abc] 匹配 a或者b或者c [^]用于反选,比如[^abc]不含有abc的 ^用于匹配行首 r'^abc' 匹配'abcd'而不是'dabc' $用于匹配行尾 类似^ \ : 用于转义. \d 表示数字 [0-9] \D 表示d的反 [