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']

  • 相关阅读:
    Android-WebView路由登录192.168.1.1
    Win7 & VirtualBox虚拟Ubuntu 本地虚拟机之间文件共享
    Android 简单的JNI编程
    Android ActionBar简单使用
    多个APK之间简单数据共享
    js代码移动Div 移动平台与PC平台
    JavaScript面向对象
    《SSO CAS单点系列》之 APP原生应用如何访问CAS认证中心
    insh.exe:*** Couldn't reserve space for cygwin's heap,Win32 error 0
    解决:SSM框架中普通类调用Service的问题 (转)
  • 原文地址:https://www.cnblogs.com/zhangziyan/p/9094506.html
Copyright © 2011-2022 走看看