精华内容
下载资源
问答
  • 英文句号(.)即为通配符,可以与除换行符外其他字符都匹配。例如:".python"可匹配"apython"、“xpython”、“?python“等匹配。 对特殊字符进行转义 使用(\)对特殊...
    • 通配符
      英文的句号(.)即为通配符,可以与除换行符外的其他字符都匹配。例如:".python"可匹配"apython"“xpython”“?python“等匹配。

    • 对特殊字符进行转义
      使用(\)对特殊字符进行转义,例如:需要匹配"python.org"时,则要对.进行转义,就要使用模式“python\\.org”来匹配,或者使用r"python\.org"

    • 字符集
      用方括号将一个子串括起, 创建一个所谓的字符集。这样的字符集与其包含的字符都匹配。,例如:"[a-zA-Z0-9]"与大写字母、小写字母和 数字都匹配。请注意,字符集只能匹配一个字符。
      要指定排除字符集,可在开头添加一个^字符,例如"[^abc]"与除a、b和c外的其他任何字符都匹配。

    • 二选一(子模式)
      使用表示二选一的特殊字符:管道字符(|)可实现二选一。例如: "(python|pythony)"表示匹配“python”“pythony”

    • 可选模式
      通过在子模式后面加上问号(?),可将其指定为可选的,即可包含可不包含。例如:r"(http://)?(www\.)?python\.org"只和“http://www.python.org”“http://python.org”“www.python.org”“python.org”匹配。

    • 重复模式
      (pattern)*:pattern可重复0、1或多次。
      (pattern)+:pattern可重复1或多次。
      (pattern){m,n}:模式可重复m~n次。

    • 字符串的开头和末尾
      可以使用(^)($)来指定待匹配字符串的开头和结尾。例如:"^ht+p""http://python.org""htttttp://python.org" 匹配,但与"www.http.org"不匹配。"org$""http://python.org""python.org" 匹配,但与"www.http.org.cn"不匹配。

    展开全文
  • 匹配方法1.search() 只会返回一次匹配结果 2.match() ...匹配结果正则匹配结果就是用原子匹配出结果,3个(.*?)匹配出就是3个部分内容。i[2]就是第三部分内容#url = '如何用Python写一个计算

    暂做笔记,正在建设,请勿参考~

    匹配方法

    1.search()
    只会返回一次匹配结果
    2.match()
    从头开始匹配,一点不符合立马结束匹配
    3.全局匹配
    re.compile(str).findall(html)
    主要用法,可匹配所有结果。

    匹配的结果

    正则匹配的结果就是用原子匹配出的结果,3个(.*?)匹配出的就是3个部分的内容。i[2]就是第三部分的内容

    #url = '<a title="如何用Python写一个计算器软件 附带效果图" href="https://www.thinksaas.cn/group/topic/834771/">如何用Python写一个计算器软件 附带效果图</a>'
    
    str = '<a title="(.*?)" href="(.*?)">(.*?)</a>'
    result = re.compile(str).findall(html)
    for i in result:
        print(i[2])

    贪婪与懒惰 (.*.*?

    (明明是这么有用的东西,为什么名字都这么消极,我看应该叫积极和稳重-_-!)
    例如 .* 这样的匹配,会匹配到所有的内容
    ?是懒惰的代名词, .*?可以保证 .*只匹配0次和1次。所以只会匹配到一次

    展开全文
  • python中正则表达式re简单引用

    千次阅读 2018-03-26 17:24:47
    正则表达式一直是被我所忽略东西,因为在之前学习和开发中基本很少用到它。而且,之前学习正则表达式时感觉很懵逼,所以毅然决然...在python中导入re包import re 一、re.match(pattern,string,flags=0)尝试从字...

    正则表达式一直是被我所忽略的东西,因为在之前的学习和开发中基本很少用到它。而且,之前学习正则表达式时感觉很懵逼,所以毅然决然的放弃了(QAQ),然而出来混总归还是要还的。最近在弄日志处理时,必须用到正则表达式,这就让我不得不拿起正则表达式了。在此记录一些自己学习的笔记与案例。

    在python中导入re包

    import re  

    一、re.match(pattern,string,flags=0)

    尝试从字符串 开始 位置(看清楚,开始位置!!!)匹配一个模式。成功则返回一个match对象,失败则是none

    参数说明:

    ———pattern     正则表达式

    ———string       字符串

    ———flags        可选标志位

    注:可选标志在下面简单说明

    获取对象的方法:

    使用group(num)  来获取对象小组内的内容。

    举例:

    #_*_coding:utf8_*_
    import re 
    str1='010-011-110'
    pattern = r'\d{3}-\d{3}-\d{3}'
    match = re.match(pattern,str1)
    print match.group()
    print match.group(0)
    print match.group(1)
    print match.group(2)
    print match.group(3)
    
    #输出为:
    010-011-110
    010-011-110
    010
    011
    110

    match()方法最重要的一点就是它是从字符串开始匹配的,切记这一点······我已经在这点上犯了很多错误了。

    在写简单的正则表达式的时候我们可以用()来进行分组,以便于我们在后续处理中取值。后续也会谈到通过命名捕获的方式来取值。

    二、re.search(pattern,string,flags=0)

    跟match函数参数一样,它也是用来匹配字符串的。而最大的不同在于它可以从字符串的任意位置匹配,不像match一样,仅限于从字符串开始位置。参数跟match一样,就不做说明了,直接上例子。

    #与match例子不同,001前面有很多空格
    str1='    001-010-110'
    #与match中的模式一样
    pattern = r'\d{3}-\d{3}-\d{3}'
    #若此时用match()函数,结果肯定是不匹配的。
    search = re.search(pattern,str1)
    print search.group()
    print search.group(0)
    print search.group(1)
    print search.group(2)
    print search.group(3)
    
    #结果:
    001-010-110
    001-010-110
    001
    010
    110

    对于match和search,还是得说一遍,注意一个必须是从字符串开始处匹配,一个是任意位置。

    三、检索和替换   re.sub()

    用于替换字符串中的匹配项

    re.sub(pattern,repl,string,count,flags)

    参数说明:

    ——pattern     正则表达式

    ——repl           替换的字符串,可为一个函数

    ——string        要被查找的原始字符串

    ——count        被替换的次数,默认替换所有匹配项

    ——flags         标志位         

    #_*_coding:utf-8_*_
    import re 
    phone = "888-7777-6666 #好牛的号码
    #删除字符串中的注释
    num = re.sub(r'#.*','',phone)
    print num
    #删除注释和-
    realphone = re.sub(r'\D','',phone)
    print realphone
    
    #结果为:
    888-7777-6666
    88877776666

    sub函数理解起来不难,但要主要的是在repl参数的使用。repl可以为一个函数。例如:

    将字符串中的数字乘以二

    def double(match):
        value = int(match.group('value'))
        return str(value*2)
    s='APPLE23EFG567'
    print re.sub(r'(?P<value>\d+)',double,s)
    
    #结果为:
     APPLE46EFG1134

    因为repl为一个函数,所以再替换的时候会替换为函数的返回值。

    注:?P<value>为正则表达式的命名捕获,在下面将会做简单记录


    四、正则表达式之命名捕获

    格式为:    ?P<name>

    在处理字符串取值时往往会用到

    例子:

    num = '001-010-110'
    pattern = r'(\d{3})-(\d{3})-(\d{3})'
    match = re.match(pattern,num)
    print match.group()       #001-010-110
    print match.group(1)      #001
    print match.group(2)      #010
    print match.group(3)      #110

    在上述例子要分别获取每项的值就要使用group(num),而当正则表达式变得复杂的时候,再用num取值时,很有可能会取到错误的值。所以就提出使用命名捕获,下面为简单例子:

    pattern = r'(?P<Area>\d{3})-(?P<zhong>\d{3})-(?P<wei>\d{3})'
    match = re.match(patter, num)
    
    print match.group('Area')     #001
    print match.group('zhong')    #010
    print match/group('wei')      #110

    虽然在上述例子中使用命名捕获会将降低正则表达式的可读性,但命名捕获咋复杂的正则中,会准确获取想要的值(当然,正则肯定得写准确啊·····)





    展开全文
  • python中的正则表达式re模块)
    展开全文
  • python中的正则表达式re模块) 一、简介 正则表达式本身是一种小型的、高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配。正则表达式模式被编译成一系列的...
  •  就其本质而言,正则表达式(或 RE)是一种小型、高度专业化编程语言, (在Python中)它内嵌在Python中,并通过 re 模块实现。正则表达式模式被 编译成一系列字节码,然后由用 C 编写匹配引擎执行。  re ...
  • Python高级——正则表达式 re模块1.match方法

    万次阅读 多人点赞 2017-11-03 12:04:06
    python正则表达式 一、什么是正则表达式 ...Wiki:正则表达式(英语:Regular Expression、regex或regexp,缩写为RE),也译为正规表示法、常规表示法,在计算机科学,是指一个用来描述或者匹配
  • 看代码 str='Hello \\n world' print(str) ...这里有一个坑就是,因为是 两个反斜杠,所以正确的正则表达式应该是’\\\\n’,而不是 ‘\\n’ 看代码 import re str1='Hello \\n world!' str2=re.sub('
  • Python中的正则表达式

    万次阅读 2020-08-10 10:22:46
    Python中的正则表达式和示例 模块正则表达式(RE)指定与其匹配的一组字符串(模式)。 为了理解RE的类比,MetaCharacter是有用的,重要的,并且将在模块re的功能中使用。 一共有14个元字符,将在功能中进行讨论...
  • Python中的正则表达式正则表达式简介正则表达式使用的特殊符号和字符==常见符号和字符==**特殊字符**正则表式和Python语言re模块:核心函数和方法==匹配对象和group(),groups()方法====重复·特殊字符和子组== ...
  • Python中的正则表达式使用,re模块的使用
  • 详解python中的正则表达式

    千次阅读 热门讨论 2020-06-25 16:27:05
    re 模块使 Python 语言拥有全部的正则表达式功能。 compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。 re 模块也提供了与这些方法功能完全...
  • python中的正则表达式re模块) https://www.cnblogs.com/tina-python/p/5508402.html
  • 详详解解Python中中的的正正则则表表达达式式 正则表达式是一个特殊的字符序列它能帮助你方便的检查一个字符串是否与某种模式匹配 文给大家带来了 python中的正则表达式感兴趣的朋友一起看看吧 一一正正则表表达达式...
  • python中的正则表达式re模块) 一、简介 正则表达式本身是一种小型的、高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配。正则表达式模式被编译成一系列的...
  • 主要介绍了在Python中使用正则表达式的方法,讲到了专门对正则表达式提供支持扩展库re,需要朋友可以参考下
  • 什么是正则表达式: 一种匹配字符串规则 正则表达式能做什么: ...正则表达式的语法: 元字符 字符组[ ] ,在一个字符位置上能出现内容 量词 特殊用法和现象 ?使用:在量...
  • python中的正则表达式re模块) 一、简介 正则表达式本身是一种小型的、高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配。正则表达式模式被编译成一系列的字节码,...
  • python中的正则表达式

    2020-08-13 20:24:13
    Perl 语言中的正则表达式。 正则表达式模式会被编译成一系列字节码,然后由用 C 编写的匹配引擎执行。 2.陷阱 友情提示: 正则表达式语言相对较小且受限制,因此并非所有可能的字符串处理任务都可以使用正则表达式...
  • Python中的正则表达式(二)

    万次阅读 2020-07-13 10:08:00
    Python中的正则表达式和示例re模块提供对Python中正则表达式的支持。以下是此模块中的主要方法。搜索模式的出现re.search():此方法返回None(如果模式不匹配),或者返...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,213
精华内容 2,085
关键字:

python中的正则表达式re

python 订阅