码迷,mamicode.com
首页 > 其他好文 > 详细

正则表达式

时间:2018-04-29 18:35:49      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:编码   表示   模式   osc   ESS   多次   3.1   mac   net   

一、正则基本知识

  正则在python中是以c实现的,在后续的爬虫等工作都需要使用到该模块,主要搜索文本的内容。搜索非常速度。

  http://tool.oschina.net/regex 

  https://www.regexpal.com/      两个个在线的正则表达式,可以用来借鉴

1.1 正则常用的匹配规则

  下面是列举出来一些常用的,更多的使用help(re)查看。

    正则默认都是贪婪匹配的(尽可能的多,贪吃)。还有一种懒惰匹配(取到最少那次就不干活了)。

    ?是一个非常有意思的规则。 自己单独的时候,表示0或多个字符。

       和贪婪的组合在一起的时候,就变成了控制贪婪变成懒惰匹配了。. 代表任意字符,但是除了换行符

# 开头和结尾
    ^         代表字符串的开始            
    $         代表字符串的结尾 ,如果是多行文本,默认只匹配第一行的结尾。
# 任意字符,贪婪匹配
    *         匹配0或多次,贪婪匹配,取到满足的最多  
    +         匹配1或多次,贪婪匹配,取到满足的最多   
    ?         匹配0或多次,贪婪匹配,取到满足的最多   
                  ?还可结合*,+,?做懒惰匹配
# ?组合-懒惰匹配
    *?   +?   ??  前面的任意字符,得到最少的那次

# 指定次数 匹配
    {m}      匹配m次。
    {m,n}    匹配m到n次,和切片的使用方法一致。也是贪婪匹配
                    {m,}   m到无穷
                    {n,}    0 到n次
                    a{m}   匹配6个a
    {m,n}?   更改成懒惰,得到最少的那次匹配
# 分组
    ()       下面会详细的讲解
# 字符集
  [] [0-9]     代表 1到9
        [a-z]     代表 a到z
        [a-zA-z0-9] 所有的字符和数字
        [abc]     匹配任意一个
        [^9]     除了9以外其他的所有
# 或
  |      常常搭配字符集使用,[a|b]:找到a了,就不找b了,反之相同。

1.2 转义字符 \

   python的正则规则是以引号 包围的,里面的的一些字符 要代表本身的含义,或 转成其他意思,就需要这个\。

   红色的为常用的。

\.        默认.是代表任意字符,我们可以让他转义为。本身
\A       只在字符串开头进行匹配。
\b       匹配位于开头或者结尾的空字符串
\B       匹配不位于开头或者结尾的空字符串
\d       匹配任意十进制数,相当于 [0-9]
\D       匹配任意非数字字符,相当于 [^0-9]
\s       匹配任意空白字符,相当于 [ \t\n\r\f\v]
\S       匹配任意非空白字符,相当于 [^ \t\n\r\f\v]
\w       匹配任意数字和字母,相当于 [a-zA-Z0-9_]
\W       匹配任意非数字和字母的字符,相当于 [^a-zA-Z0-9_]
\Z       只在字符串结尾进行匹配
\number  在分组中使用,类似占位符

 

二 、两种使用方法

 方法1:利用compile方法,生成一个re对象,好处是可以多次使用

import re
res = re.compile(\d{3})            # 第一步,把正则字符串进行编码,返回一个re对象,保存为一个常量
result = res.search(I am hui 123)  # 第二步,把compile返回的对象,去匹配字符串,返回一个mactch对象
result.group()                       # 第三步,使用match对象的group方法,返回实际匹配的对象

  方法2:直接使用re的方法,对于单一的使用比较方便,如果每次使用,每次都要定义。

import re
x = re.search(\d{3}, I am hui 123) # 直接使用match对象
x.group()                              # 使用match对象的group方法,返回实际匹配的对象

 

三、函数

3.1 compile

   compile(pattern, flags=0)

    Compile a regular expression pattern into a regular expression object re.compile(pattern, flags=0)

    把正则表达式的模式和标识转化成正则表达式对象,供 match() 和 search() 这两个 函数使用。

  常用的flags: 

re.I    忽略大小写
re.L    表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境
re.M    多行模式
re.S    把‘.’切换成 包含换行符,默认 点 是不包含换行符号的。
re.X    为了增加可读性,忽略空格和’ # ’后面的注释

# TODO 添加一个列子

 

3.2 seach

 

    

正则表达式

标签:编码   表示   模式   osc   ESS   多次   3.1   mac   net   

原文地址:https://www.cnblogs.com/louhui/p/8971497.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!