python正则表达式

正则表达式通常用来匹配和搜索

特殊字符:

.     匹配任意单个字符   除去   

    import re
    myname = "my name is xiaofan!"
    m=re.findall(r'.',myname)
    print(m)

    ['m', 'y', ' ', 'n', 'a', 'm', 'e', ' ', 'i', 's', 'x', 'i', 'a', 'o', 'f', 'a', 'n', '!']

*    匹配前面子表达式的 0次到多次    (贪婪) 

    import re
    myname = "my name is xiaofan!"
    m=re.findall(r'my*',myname)
    print(m)

    ['my', 'm']

?   屁前面的表达式  0次到1次     (贪婪)

    import re
    myname = "xiaoo"
    m=re.findall(r'o?',myname)
    print(m)

    ['', '', '', 'o', 'o', '']

+    匹配前的表达式 1次到多次      (贪婪)  

    import re
    myname = "xiaoo ao o tt "
    m=re.findall(r'o+',myname)
    print(m)

    ['oo', 'o', 'o']

^    开头

$    结尾   

    import re
    name="xiaofan fanf"
    m=re.findall(r'^x',name)
    m1=re.findall(r'^x.*f$',name)
    m2=re.findall(r'f$',name)
    print(m)
    print(m1)
    print(m2)

  

    ['x']
    ['xiaofan fanf']
    ['f']

(......)  匹配括号里面的内容可以用 来调用

w    匹配所有的字母数字下划线

W    匹配所有的非数字字母下划线

d    匹配所有的数字

D    匹配所有的非数字

s     匹配空白字符

S    匹配非空白字符

    import re
    name="xiaofan123!@# "
    m=re.findall(r'w',name)
    m1=re.findall(r'W',name)
    m2=re.findall(r'd',name)
    m3=re.findall(r'D',name)
    m4=re.findall(r's',name)
    m5=re.findall(r'S',name)
    print(m)
    print(m1)
    print(m2)
    print(m3)
    print(m4)
    print(m5)

    ['x', 'i', 'a', 'o', 'f', 'a', 'n', '1', '2', '3']
    ['!', '@', '#', ' ']
    ['1', '2', '3']
    ['x', 'i', 'a', 'o', 'f', 'a', 'n', '!', '@', '#', ' ']
    [' ']
    ['x', 'i', 'a', 'o', 'f', 'a', 'n', '1', '2', '3', '!', '@', '#']

[a-z]       小写字母

[A-Z]      大写字母

[a-zA-Z]    大小写字母

    import re

    name="XiaoFan"
    m=re.findall(r'[a-z]',name)
    m1=re.findall(r'[A-Z]',name)
    m2=re.findall(r'[a-zA-Z]',name)
    print(m)
    print(m1)
    print(m2)

    ['i', 'a', 'o', 'a', 'n']
    ['X', 'F']
    ['X', 'i', 'a', 'o', 'F', 'a', 'n']

|      匹配 | 两边的任意一种字符

[^]     匹配非括号当中的字符

    import re
    name="XiaooFann"
    m=re.findall(r'a|o',name)
    m1=re.findall(r'[^A-Z]',name)
    print(m)
    print(m1)

    ['a', 'o', 'o', 'a']
    ['i', 'a', 'o', 'o', 'a', 'n', 'n']
    ['o', 'o']

{m,n}     匹配出现m~n 次的

{n}         匹配出现n次的

    import re
    name="aaabaaca"
    m=re.findall(r'a{1,2}',name)
    m1=re.findall(r'a{2}',name)
    print(m)
    print(m1)

    ['aa', 'a', 'aa', 'a']
    ['aa', 'aa']

re.S    修改.的匹配模式,让.可以匹配到

re.M    修改 的匹配方式

re.l     忽略大小写

re.findall       从指定的字符串中匹配所有满足正在描述的问题,返回列表

re.search      从字符串中匹配一次指定规则

re.match      从字符串中开头匹配一次指定的规则

re.compile     形成正则模型

re.sub           替换,和replace相似

re.split         分隔,和字符串的split相似

    import re
    test="daadaad"
    t1=re.search(r'a',test)
    t2=re.match(r'a',test)
    print(t1)
    print(t1.group())
    print(t2)

    <_sre.SRE_Match object; span=(1, 2), match='a'>
    a
    None

    tt=re.sub(r'^x','X',"xiaofan")
    print(tt)

    Xiaofan

    t=re.split('-','xiao-fan')
    print(t)

    ['xiao', 'fan']

原文地址:https://www.cnblogs.com/fanxuanhui-linux/p/5902727.html