zoukankan      html  css  js  c++  java
  • python-day5爬虫基础之正则表达式2

    dot:

    '.'匹配任意的字符

    '*'匹配任意多个(0到多个) 如图所示,

    程序运行结果是abc,之所以没有匹配 ,是因为 是换行符,它就代表这个字符串是两行的,而正则表达式是一行一行去匹配的。在re.match中遇到换行符就默认的认为字符串结束了,所以就不会去匹配下一行的内容,因此输出abc。

    DOTALL:单单表示字符串,还可以表示换行符。这样的话,他就可以匹配整个字符串了。如上所示。

    caret:中文意思就是拖字号,shift+6,

    findall,就是找出所有的‘abc’,但是在匹配的时候,我们把它当成一个整体来匹配了,虽然它是两行,其中‘^’表示开始位置,此时如果我们加一个re.MULTILINE,此时这个‘^’就不单单表示字符串的开始了,而是表示行的开始,所以遇到换行符后又是一个新行。程序如下:

    ‘^’表示字符串的开始,‘$’表示字符串的结束,先看程序:

    之所以匹配了abc2,没有匹配abc1,是因为在不加任何flag的情况下,‘$’表示的是一个字符串的结束,而不是行的结束,虽然里边有个换行符,但是没有任何的flag。如我我们加上re.MULTILINE,它就代表我们将这个字符串,当成多行来处理,那样的话,运行结果就不得而知了。如下:(d表示的是数字)

     

    从上可以看出,没有re.MULTILINE就代表字符串的结束,有re.MULTILINE就代表行的结束。

    *:前一个匹配单元的匹配次数,匹配0到多个

    +:前一个匹配单元的匹配次数,匹配1到多个

    ?:前一个匹配单元的匹配次数,匹配0到1个

    那么 r’ab*’表示的就是匹配1个a,b可以是0个,也可以是多个,看程序:

    这里补充一下,如果我们在后边再加上group,就可以将匹配结果打印出来了,如下:

    如果我们将*换成+,那就匹配不上了, 那样就代表1个a,b最少是一个,看程序:

    同理,把+换成?,也是可以匹配的。

     接下来,在看一看贪婪和非贪婪(greedy/non-greedy)

    先看程序:

     

    .表示任意字符,*表示0到多个,而这样系统默认是贪婪模式,所以,H 1 > t I t l e < / H 1 全部都当成了任意字符,因为最后边有个>。其实匹配结果是这样的<H1>title</H1>,不知这样写能不能看懂,朋友们。

    还有就是如果最后边没有那个‘>’,那么他就认为最后一个’>’是<H1>中的红体部分,运行结果我们也就知道了,如下:

    如果此时,我们加一个?,他就变成非贪婪模式,看程序:

    默认的是贪婪模式,要想非贪婪,就要加?

    再给大家介绍一个,{m}表示匹配个数,看程序吧

    通过上边这个程序,大家应该都看明白了吧,{m}代表的就是匹配的个数,如果个数不够m个,就会报错,如果个数大于m个,就会输出m个结果,多余的也不会输出。再扩展一下,看程序:

    两个输出语句的区别就是一个有问号,一个没有问号,大家应该都明白,带问号的就是非贪婪模式,而{2,4}代表匹配2到4个,贪婪模式下,会匹配多的,也就是4个,非贪婪模式下,会匹配少的,也就是2个。

    再看看转义字符’’,看程序:

    如果不加转义字符‘’,$就会被系统认为是结束字符,加上之后,就会被当成一个符号来匹配。

    最后,再写个[ ],它就代表集合的意思,就是可以匹配集合里边的任意一个,先看程序:

    以上就是今天所学,总结的可能有些不是很细,部分内容可能理解有些不对,还请多多指出,大家共同学习,一起进步,谢谢。

  • 相关阅读:
    『转』VC 工具使用和调试方法
    『轉』WINCE下如何实现发短信
    『转』Fatal error: Call to undefined function curl_init
    『转』WinCE驱动程序的分类
    『轉』Windows CE下的串口通讯类
    『轉』VC 6.0 “fatal error LNK1104: cannot open file "mfc42u.lib"”问题解决
    水晶报表乱码中文乱码问题(收藏)
    水晶报表如何完美导出一个Excel表格(收藏)
    ASP.NET AJAX(开发代号Atlas)重要参考资源大收集
    表格排序
  • 原文地址:https://www.cnblogs.com/jiangtongxue/p/9392932.html
Copyright © 2011-2022 走看看