zoukankan      html  css  js  c++  java
  • 2020年1月2日 MRKJ page150 re模板

    import re
    pattern=r'mrw+'  #模式字符串,前面加个r做成原生字符,这样就不用加斜杠做转义
    string2='MR_SHOP mr_shop'#要进行匹配的字符串
    M=re.match(pattern,string2)
    # flags 可选参数,表示标志位的,用于控制匹配方式的
    msg='	A 只进行ASCII匹配,也就是不匹配汉字
    ' 
        '	I 不区分大小写
    ' 
        '	M 将^ 和 $ 用于整个字符串的开始和结尾的每一个行
    ' 
        '	S 用(.) 匹配所有字符,包括换行
    ' 
        '	X 忽略模式字符串中未转义的空格和注释'
    print('
    **************
    ',msg,'
    ***************
    ')
    N=re.match(pattern,string2,re.I)
    print(M,'
    ',N)
    print('start位置:',N.start(),'
    end位置:',N.end())
    print('匹配位置的元祖:',N.span())
    print('要匹配的字符串:',N.string)
    print('匹配数据:',N.group())
    
    
    print(N.string[0:7])
    print(string2[N.start():N.end()])
    print(string2[N.span()[0]:N.span()[1]])

    》》》》》

    **************
    A 只进行ASCII匹配,也就是不匹配汉字
    I 不区分大小写
    M 将^ 和 $ 用于整个字符串的开始和结尾的每一个行
    S 用(.) 匹配所有字符,包括换行
    X 忽略模式字符串中未转义的空格和注释
    ***************

    None
    <re.Match object; span=(0, 7), match='MR_SHOP'>
    start位置: 0
    end位置: 7
    匹配位置的元祖: (0, 7)
    要匹配的字符串: MR_SHOP mr_shop
    匹配数据: MR_SHOP
    MR_SHOP
    MR_SHOP
    MR_SHOP

    re.match与re.search的区别

    re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。
    re.findall 用于匹配整个字符串,并以列表方式返回,如果没有则返回空列表。

    import re  #验证手机号是不是中国移动
    tel_moban=r'^1(3|5)[4-9]d{8}$'#添加边界符,这样就能确保匹配的数字
    tel='13434343443'
    match=re.match(tel_moban,tel)
    if match==None:
        print('sorry')
    else:
        print('ok',match.group())

    》》》

    ok 13434343443

    import re
    pattern=r'mrw+'  #模式字符串,前面加个r做成原生字符,这样就不用加斜杠做转义
    string2='项目名称MR_SHOP mr_shop'#要进行匹配的字符串
    M=re.search(pattern,string2)
    # flags 可选参数,表示标志位的,用于控制匹配方式的
    msg='	A 只进行ASCII匹配,也就是不匹配汉字
    ' 
        '	I 不区分大小写
    ' 
        '	M 将^ 和 $ 用于整个字符串的开始和结尾的每一个行
    ' 
        '	S 用(.) 匹配所有字符,包括换行
    ' 
        '	X 忽略模式字符串中未转义的空格和注释'
    print('
    **************
    ',msg,'
    ***************
    ')
    N=re.search(pattern,string2,re.I)
    print(M,'
    ',N)
    print('start位置:',N.start(),'
    end位置:',N.end())
    print('匹配位置的元祖:',N.span())
    print('要匹配的字符串:',N.string)
    print('匹配数据:',N.group())
    
    
    print(N.string[4:11])
    print(string2[N.start():N.end()])
    print(string2[N.span()[0]:N.span()[1]])

    》》》》

    **************
    A 只进行ASCII匹配,也就是不匹配汉字
    I 不区分大小写
    M 将^ 和 $ 用于整个字符串的开始和结尾的每一个行
    S 用(.) 匹配所有字符,包括换行
    X 忽略模式字符串中未转义的空格和注释
    ***************

    <re.Match object; span=(12, 19), match='mr_shop'>
    <re.Match object; span=(4, 11), match='MR_SHOP'>
    start位置: 4
    end位置: 11
    匹配位置的元祖: (4, 11)
    要匹配的字符串: 项目名称MR_SHOP mr_shop
    匹配数据: MR_SHOP
    MR_SHOP
    MR_SHOP
    MR_SHOP

    import re #验证是否有危险字符
    pattern=r'(hk)|(zb)|(jt)'
    about='I am hk,like zb,I want to jt'
    match=re.search(pattern,about)
    if match:
        print('this is unsafty:',match.group())
    else:
        print('this is safty')

    》》》》》

    this is unsafty: hk

    import re  #re.findall 方法
    pattern=r'mrw+'  #模式字符串,前面加个r做成原生字符,这样就不用加斜杠做转义
    string2='MR_SHOP mr_shop'#要进行匹配的字符串
    M=re.findall(pattern,string2)
    # flags 可选参数,表示标志位的,用于控制匹配方式的
    msg='	A 只进行ASCII匹配,也就是不匹配汉字
    ' 
        '	I 不区分大小写
    ' 
        '	M 将^ 和 $ 用于整个字符串的开始和结尾的每一个行
    ' 
        '	S 用(.) 匹配所有字符,包括换行
    ' 
        '	X 忽略模式字符串中未转义的空格和注释'
    print('
    **************
    ',msg,'
    ***************
    ')
    N=re.findall(pattern,string2,re.I)
    print(M,'
    ',N) #返回的是列表

    》》》》

    **************
    A 只进行ASCII匹配,也就是不匹配汉字
    I 不区分大小写
    M 将^ 和 $ 用于整个字符串的开始和结尾的每一个行
    S 用(.) 匹配所有字符,包括换行
    X 忽略模式字符串中未转义的空格和注释
    ***************

    ['mr_shop']
    ['MR_SHOP', 'mr_shop']

  • 相关阅读:
    HDU 3081 Marriage Match II
    HDU 4292 Food
    HDU 4322 Candy
    HDU 4183 Pahom on Water
    POJ 1966 Cable TV Network
    HDU 3605 Escape
    HDU 3338 Kakuro Extension
    HDU 3572 Task Schedule
    HDU 3998 Sequence
    Burning Midnight Oil
  • 原文地址:https://www.cnblogs.com/python1988/p/12142219.html
Copyright © 2011-2022 走看看