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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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也需要用\\来表示\ 哦

 

以上是关于python 优雅的使用正则表达式 ~ 2的主要内容,如果未能解决你的问题,请参考以下文章

python 字符串替换功能 string.replace()可以用正则表达式,更优雅

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

Python:检查列表中至少一个正则表达式是不是与字符串匹配的优雅方法

循环通过 python 正则表达式匹配

asp.net 使用正则表达式验证包含打开/关闭括号片段的属性字符串

正则表达式查找两个字符串的最长公共前缀