• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Python爬虫正则表达式常用符号和方法
    POST TIME:2021-10-18 05:34

    正则表达式并不是Python的一部分。正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;但不用担心,不被支持的语法通常是不常用的部分。

    1、常用符号

    . :匹配任意字符,换行符 \n 除外

    :匹配前一个字符0次或无限次
    ? :匹配前一个字符0次或1次

    .* :贪心算法,尽可能的匹配多的字符

    .*? :非贪心算法

    () :括号内的数据作为结果返回

    2、常用方法

    findall:匹配所有符合规律的内容,返回包含结果的列表

    Search:匹配并提取第一个符合规律的内容,返回一个正则表达式对象

    Sub:替换符合规律的内容,返回替换后的值

    3、使用示例

    (1). 的使用举例,匹配任意字符,换行符 \n 除外

    import re #导入re库文件

    a = 'xy123'

    b = re.findall('x..',a)

    print b

    打印的结果为:['xy1'] ,每个 . 表示一个占位符

    (2) * 的使用举例,匹配前一个字符0次或无限次

    a = 'xyxy123'

    b = re.findall('x*',a)

    print b

    打印的结果为:['x', '', 'x', '', '', '', '', '']

    (3) ? 的使用举例,匹配前一个字符0次或1次

    a = 'xy123'

    b = re.findall('x?',a)

    print b

    打印的结果为:['x', '', '', '', '', '']

    (4) .* 的使用举例

    secret_code = 'hadkfalifexxIxxfasdjifja134xxlovexx23345sdfxxyouxx8dfse'

    b = re.findall('xx.*xx',secret_code)

    print b

    打印的结果为:['xxIxxfasdjifja134xxlovexx23345sdfxxyouxx']

    (5).*?的使用举例

    secret_code = 'hadkfalifexxIxxfasdjifja134xxlovexx23345sdfxxyouxx8dfse'

    c = re.findall('xx.*?xx',secret_code)

    print c

    打印的结果为:['xxIxx', 'xxlovexx', 'xxyouxx']

    (6) ()的使用举例

    secret_code = 'hadkfalifexxIxxfasdjifja134xxlovexx23345sdfxxyouxx8dfse'

    d = re.findall('xx(.*?)xx',secret_code)

    print d

    打印的结果为:['I', 'love', 'you'] ,括号内的数据作为返回的结果

    (7) re.S的使用举例

    s = '''sdfxxhello

    xxfsdfxxworldxxasdf'''

    d = re.findall('xx(.*?)xx',s,re.S)

    print d

    打印的结果为:['hello\n', 'world'] ,re.S的作用是使 . 在匹配时包括 \n

    (8) findall的使用举例

    s2 = 'asdfxxIxx123xxlovexxdfd'

    f2 = re.findall('xx(. ?)xx123xx(. ?)xx',s2)

    print f20

    打印的结果为:love

    这时f2为含有一个元组的列表,该元组包含两个元素,该元组中的两个元素为两个()匹配到的内容,如果s2包含多个'xx(. ?)xx123xx(. ?)xx'这样的子串,则f2包含多个元组;

    (9) search的使用举例

    s2 = 'asdfxxIxx123xxlovexxdfd'

    f = re.search('xx(. ?)xx123xx(. ?)xx',s2).group(2)

    print f

    打印的结果为:love

    .group(2) 表示返回第二个括号匹配到的内容,如果是 .group(1), 则打印的就是:I

    (10)sub的使用举例

    s = '123rrrrr123'

    output = re.sub('123(.*?)123','123%d123'%789,s)

    print output

    打印的结果为:123789123

    其中的%d类似于C语言中的%d,如果 output=re.sub('123(.*?)123','123789123',s),输出结果也为: 123789123

    (11) \d 的使用举例,用于匹配数字

    a = 'asdfasf1234567fasd555fas'

    b = re.findall('(\d+)',a)

    print b

    打印的结果为:['1234567', '555'] , \d+ 可以匹配数字字符串;

    以上就是python爬虫正则表达式的一些常用符号和语法,希望对python初学者学习有所帮助。

    您可能感兴趣的文章:
    • 零基础写python爬虫之神器正则表达式
    • Python的爬虫包Beautiful Soup中用正则表达式来搜索
    • python3爬虫之入门基础和正则表达式
    • python爬虫 正则表达式使用技巧及爬取个人博客的实例讲解
    • python爬虫正则表达式之处理换行符
    • 玩转python爬虫之正则表达式
    • Python爬虫之正则表达式基本用法实例分析
    • Python 爬虫学习笔记之正则表达式
    • Python爬虫之正则表达式的使用教程详解
    • Python爬虫教程之利用正则表达式匹配网页内容
    上一篇:正则表达式断言、巡视(Assertions)、正向断言、反向断言介绍
    下一篇:基于Python正则表达式提取搜索结果中的站点地址
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信