正则表达式

一、什么是正则表达式

  正则就是用一些具有特殊意义的符号组合到一起(称为正则表达式)来描述字符或字符串的方法。或者说:正则就是用来描述一类事物的规则。

二、正则表达式的作用,以及使用场景

  1.作用于字符串中匹配满足规则的内容,多数用于爬虫应用程序

  2.判断字符串是否满足某种规则。

三、常用匹配模式(元字符)

元字符

描述
\ 将下一个字符标记符、或一个向后引用、或一个八进制转义符。
^ 匹配字行首
$ 匹配末尾

*

匹配前面的子表达式任意次
+ 匹配前面的子表达式一次或多次
{n} n是一个非负整数,匹配确定的n次
{n,} n是一个非负整数,至少匹配n次
{n,m} m,n为非负整数,至少匹配n次,最多匹配m次
匹配前面的子表达式零次或一次
当该字符紧跟在任何一个其他限制符(,+,?,{n},{n,},{n,m*})后面时,匹配模式是非贪婪的。非贪婪模式尽可能少地匹配所搜索的字符串,而默认的贪婪模式则尽可能多地匹配所搜索的字符串。
.

匹配除了\n和\r之外的任意单个字符

x|y 匹配x或y
[xyz] 字符集合,匹配包含的任意字符
[^xyz] 匹配除了xyz的其他任意字符
[a-z] 字符范围,匹配指定范围内的任意字符
[^a-z] 字符范围为除了a-z的范围
\b 匹配一个单词的边界,也就是指单词和空格间的位置。
\B 匹配非单词边界
\s 匹配任何不可见字符#[ \f\n\r\t\v]
\S 匹配任何可见字符
\w 匹配包括下划线的任何单词字符
\W 匹配任何非单词字符
\d 匹配一个数字字符
\D 匹配一个非数字字符
\n 匹配一个换行符
\r 匹配一个回车符
\t 匹配一个制表符
() 将()之间的表达式定义为组,并将其保存到临时区域,最多九个,可以用\1到\9来引用
(?:pattern) 非匹配获取,匹配pattern但是不获取匹配结果,不进行存储
| 将两个匹配条件进行or逻辑运算。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

四、贪婪模式

  默认情况下+和*尽可能多的匹配内容

  import re
  print(re.findall('bo.*bo','bo13212bo1231231231231231312bo'))
  #['bo13212bo1231231231231231312bo']

五、非贪婪模式 

  import re
  print(re.findall('bo.*?bo','bo13212bo1231231231231231312bo'))
  # ['bo13212bo']

六、re模块其他函数

  1.search

    仅获取第一个匹配的内容

  2.match

    从字符串开头匹配(只匹配开头,没匹配上就直接返回None)

  3.compile

    得到一个表达式对象,后期可以重复使用

  4.split

    re.split("[:\/\\]","a:b/c\d/f")

  5.sub   

    普通替换与字符串的替换没有区别

    print(re.sub("python","PYTHON","python asasasaasa python"))

    正则替换 只替换后面的python

    print(re.sub("(python)(.*)(python)",r"\1\2PYTHON","python asasasaasa python"))

    

  

posted @ 2019-04-16 16:59  Mr-Bear  阅读(140)  评论(0编辑  收藏  举报