Python学习笔记(一)

  正则表达式(和JavaScript等语言共通)

   正则表达式就是对一些字符的匹配,查询,获取的优化,使之更加简单,但是在这种优化强度下,它又及其复杂,特性,需要记得的东西很多的说

  一, 导入Re库

  由于re库是下载安装完python自带的,所以无需再下载

  # 如果没有,则需要先下载

1 pip3 install re
1 import re

  二,方法

   就目前来讲,re最常用的三种方法

    • match()
    • search()
    • findall() 

    首先,match() 方法就是从开头开始查找,若是第一个首字符以及后面的不是所要匹配的内容,则会返回None

   其次,search() 方法就相对之广多了,它是对 整个要匹配的String进行检索

   当然,findall)() 顾名思义,就是对所有内容进行检索,并且返回字符串数组

   对了,三个方法的参数均为

    pattern, string, flags=0

      pattern ==>  要匹配的内容

    string  ==>  被匹配的字符串

    flags   ==>  匹配方式

  现在来一一,细说。

  首先来说 flags(当然只记录常用的喽)

  • re.I        忽略大小写
  • re.M      多行匹配,影响边界字符 ^ 和 $
  • re.X       使得我们以更灵活的方式理解正则表达式
  • re.S       匹配包括换行符号在内的所有字符
  • .......                

  其次,最多的就是 pattern 这些元字符

  • [0123456789]      匹配0-9所有的数字
  • [0-9a-zA-Z]          匹配任意的数字,字母,下划线
  • [^sunck]               匹配除了 sunck 这几个字母以外的所有字母
  • [\d]                      匹配0-9所有的数字
  • [\D]                      匹配非数字字符,效果同[^0-9]
  • [\w]                      匹配数字,下划线,字母,并且能匹配汉字
  • [\W]                     匹配非数字,下划线,字母
  • [\s]                      匹配任意的空白符,空格,换行,换页,制表,回车
  • [\S]                     匹配任意的非空白符号,效果同[^ \f\t\r\n] 

   关于其中的注意项

   中括号中的 ^ 是非的意思,表示不匹配集合种的字符

   \ 后字母的大写是小写的的意思,表示..........

   补充方法

     match, search 方法后接 .span 可以返回匹配的内容在字符串中的位置下标

    代码示范:

1 print(re.match("[^sunck]", "sunck is a good man"))
2 # None
3 print(re.search("[^sunck]", "sunck is a good man"))
4 # match: " ", span=(5, 6)
5 print(re.search("[^sunck]", "sunck is a good man").span())
6 # (5, 6)
7 print(re.findall("[\d]", "39abc4"))
8 # ['3', '9', '4']

    接下来的都算补充内容8

 补充:边界字符

  •  ^             行首匹配
  • $             行尾匹配
  • \A            字符串开始匹配,区别于 ^
    • 首先,它匹配的是整个字符串的首位置, 而 ^ 是一行的行首
    • 同时,这也意味着,当 flags = re.M 多行匹配时,^ 是可以同时匹配多行行首的,而 $ 却不行
  • \Z            字符串结束位置匹配(区别于 $)
  • \b            匹配一个单词的边界
  • \B           匹配非单词边界
    1 print(re.search("^sunck", "sunck is a good man"))
    2 # <re.Match object; span=(0, 5), match='sunck'>
    3 print(re.search("sunck$", "sunck is a good man sunck"))
    4 # <re.Match object; span=(20, 25), match='sunck'>
    5 print(re.search("^sunck", "is a good man sunck"))
    6 # None

 边界字符不是加在 [] 里的

 1 # \b \B比较
 2 print(re.search(r"er\b", "never"))
 3 # <re.Match object; span=(3, 5), match='er'>
 4 print(re.search(r"er\b", "nerve"))
 5 # None
 6 print(re.search("er\B", "never"))
 7 # None
 8 print(re.search("er\B", "nerve"))
 9 # <re.Match object; span=(1, 3), match='er'>
10 这就是两者间的区别

 

 

 

 

 

 

  

posted @ 2019-08-18 23:07  小喵钓鱼  阅读(345)  评论(0编辑  收藏  举报