zoukankan      html  css  js  c++  java
  • 正则表达式 re模块

     1 数字:
     2 [0-9]
     3 
     4 字母:
     5 小写 [a-z]
     6 大写 [A-Z]
     7 大小写 [A-Za-z]
     8 
     9 数字和大小写字母[A-Z0-9a-z]
    10 
    11 大小写字母+下划线:
    12 [A-Z0-9a-z_]

    正则式转义:

    在字符组当中 -是有特殊意义的,如果我们想取消这个横杠的特殊意义
    需要使用作为转义符

     1 字符组之外的其他带有特殊规则的元字符:
     2 [0-9] d 匹配任意一个数字 digit
     3 [A-Z0-9a-z_] w 标识符
     4 
     匹配回车换行
     5 	 匹配制表符 table
     6 空格 本身匹配 空格
     7 s 匹配所有的空白  d 匹配所有的数字  w 匹配数字字母以及下划线
     8  匹配一个单词的边界
     9 反义词
    10 W 除了数字字母下划线之外的所有
    11 D 除了数字之外的所有
    12 S 除了空白之外的所有
    13 
    14 . 匹配换行符之外的所有字符
    15 
    16 匹配所有 :[Dd] [Ww] [Ss]
    17 非字符组 :[^123]除了123之外的都匹配
    18 
    19 和结束符
    20 ^ 永远在一个规则的最开始
    21 $ 永远在一个规则的最末尾
    22 ^和$ 规定了这个字符串的长度,并且在这个长度内的内容
    23 
    24 | 或的概念
    25 123|456
    26 把相对长的永远放在左侧
    27 
    28 www.baidu.com
    29 www.oldboy.com
    30 
    31 分组的概念
    32 www.(baidu|oldboy).com
    1 量词的范围内尽可能多的匹配
    2 {n} 表示出现n次
    3 {n,} 表示至少出现n次
    4 {n,m} 表示出现n-m次
    5 ? 表示匹配0次或1次
    6 + 表示匹配1次或多次
    7 * 表示匹配0次或多次
    1 贪婪匹配 :默认的 尽可能多匹配
    2 惰性匹配 :需要我们手动设置的 尽可能少匹配
    3 a.* 以a开头的任意一个字符串都可以被匹配出来
    4 a.*? 非贪婪
    5 a.*?x 从a开始匹配,匹配任意长度的字符,遇到一个x就立即停止

    re模块:

    findall  

     1 re.findall(pattern, string, flags=0)
     2 #根据正则规则从一段内容中查找结果,找到就返回,没找到就返回空列表
     3 import  re
     4 ret= re.findall('d+','alex123yuan234')
     5 print(ret)
     6 
     7 分组与re.findall()的结合:
     8 import re
     9 ret = re.findall('>(w+)<',r'<title>qqxing<	itle>')
    10 print(ret)  # findall永远优先显示分组中的内容
    11 
    个人理解:#分组左右两边输入的内容相当于指定了查找边界,找到了就返回,没找到返回空列表。

    search

    1 ret = re.search('d+','alex66yuan')
    2 if ret:
    3     print(ret.group())
    1 ret= re.search('d+','alex123yuan234')  #找到正则式规则里的第一个就返回元素
    2 ret1= re.search('(w*?)(d+)(w*?)(d+)','alex123yuanx234') 
    3 #按规则将字符串分组,可以按照组的索引取值
    4 print(ret)  # 结果对象
    5 print(ret.group())
    6 print(ret1.group(1))
    7 print(ret1.group(2))
    8 print(ret1.group(3))
    9 print(ret1.group(4))

    match:从字符串开头开始找,没找到就报错,找到就返回

    1 ret = re.match('d+','123alex266')
    2 print(ret)
    3 print(ret.group())
    1 match可以使用search进行替代
    2 re.search('^d+','alexyuan') == re.match('d+','123alex')
    3 ret = re.search('^d+','2alexyuan')
    4 print(ret.group())
    sub :替代,可设置替代次数




  • 相关阅读:
    iOS-开发日志-UIButton
    苹果API常用英语名词
    iOS-开发日志-UIimageView
    IOS-开发日志-UILabel相关
    iOS-开发日志-UIPageControl
    Maven-生成可执行的Jar包
    RabbitMQ不讲武德,发个消息也这么多花招
    Azure Service Bus(三)在 .NET Core Web 应用程序发送ServiceBus Queue
    windows server 2012 R2里IIS配置.net core2.1遇到的坑
    VScode中配置C++运行环境
  • 原文地址:https://www.cnblogs.com/chitangyuanlai/p/10574623.html
Copyright © 2011-2022 走看看