zoukankan      html  css  js  c++  java
  • Python正则表达式x*与x?的区别

    Python正则表达式符号与方法:

    且单字符的x?和x*能找出换行符号,而x则不能.

    程序如下:

    import re
    #. 匹配任意字符,换行符
    除外
    #. 可以看成一个占位符,几个.占几个位置
    #特别的,0个.就占0个位置
    a='xxyxz'
    print('对{0}进行查找
    '.format(a))
    
    b=re.findall('x*',a)
    print('用x*进行查找的结果{0}'.format(b))
    
    b=re.findall('x?',a)
    print('用x?进行查找的结果{0}'.format(b))
    
    b=re.findall('x',a)
    print('用x进行查找的结果{0}'.format(b))
    
    b=re.findall('x.',a)
    print('用x.进行查找的结果{0}'.format(b))

    结果如下:

    对xxyxz进行查找

    用x*进行查找的结果['xx', '', 'x', '', '']
    用x?进行查找的结果['x', 'x', '', 'x', '', '']
    用x进行查找的结果['x', 'x', 'x']
    用x.进行查找的结果['xx', 'xz']

    补充:

    以下结论由几次试验得出,还未证实.

    特别的,对于xy*和xy?末尾多一个字符的字符串去查找会查找出来不含末尾字符的项,而用多两个的字符串则查找不出来任何项. 而xx则不然. 

    特别的,当用连续相同字符查找时,xx*查找结果会找到后面的所有直接相连x, 而xx?则不然.

    程序如下:

     1 import re
     2 a='xxxxyzxyzxys'
     3 print('对{0}进行查找'.format(a))
     4 b=re.findall('xyz*',a)
     5 print('用xyz*进行查找的结果{0}'.format(b))
     6 
     7 b=re.findall('xyz?',a)
     8 print('用xyz?进行查找的结果{0}'.format(b))
     9 
    10 b=re.findall('xx*',a)
    11 print('用xx*进行查找的结果{0}'.format(b))
    12 
    13 b=re.findall('xx?',a)
    14 print('用xx?进行查找的结果{0}'.format(b))

    输出如下:

    对xxxxyzxyzxys进行查找
    用xyz*进行查找的结果['xyz', 'xyz', 'xy']
    用xyz?进行查找的结果['xyz', 'xyz', 'xy']
    用xx*进行查找的结果['xxxx', 'x', 'x']
    用xx?进行查找的结果['xx', 'xx', 'x', 'x']

  • 相关阅读:
    Controller返回值string、mv等区别
    CA证书目的和详细演化过程
    HashMap和Hashtable的区别
    操作系统-IO管理疑难点
    IO核心子系统
    操作系统-IO管理概述
    文件管理疑难点
    磁盘组织与管理
    文件系统实现
    文件系统基础
  • 原文地址:https://www.cnblogs.com/zhangziyan/p/9094506.html
Copyright © 2011-2022 走看看