正则表达式常用操作符

    技术2022-07-10  145

    正则表达式常用操作符

    上来先给两个常用的表:

    re模块下的函数

    compile(pattern)创建模式对象

    import re pat=re.compile("A") m=pat.search("ABC") print(m) 输出:<re.Match object; span=(0, 1), match='A'>

    search(pattern,string)在字符串中寻找模式

    m=re.search('asd','ASDasd') 输出:<re.Match object; span=(3, 6), match='asd'> m=re.search("asd","ASDASD") 输出:None

    match(pattern,string)在字符串开始处匹配模式

    pat=re.compile("a") print(pat.search("Aasd")) print(pat.match("aASD")) if pat.search("asd"): print("ok") if re.search("a","ASD"): print("ok") 输出: <re.Match object; span=(1, 2), match='a'> <re.Match object; span=(0, 1), match='a'> ok

    split(pattern,string)根据模式分割字符串,返回列表

    re.split(' ',', a, s, d,asd') 输出:[',', 'a,', 's,', 'd,asd'] pat=re.compile(',') pat.split('a,s,d,asd') 输出:['a', 's', 'd', 'asd'] re.split('[,]+','a, s, d ,,,,,,asd') 输出:['a', ' s', ' d ', 'asd'] re.split('[,]+','a, s, d ,,,,,,asd',maxsplit=1) 输出:['a', ' s, d ,,,,,,asd'] re.split('[,]+','a, s, d ,,,,,,asd',maxsplit=2) 输出:['a', ' s', ' d ,,,,,,asd']

    findall(pattern,string)列表形式返回匹配项

    import re print(re.findall('a','ASDaDFGAa')) pat=re.compile('[A-Z]+') print(pat.findall('ASDaDFGAa')) pat=re.compile('[A-Z]') print(pat.findall('ASDaDFGAa')) pat=re.compile('[A-Za-z]') print(pat.findall('ASDaDFGAa')) 输出: ['a', 'a'] ['ASD', 'DFGA'] ['A', 'S', 'D', 'D', 'F', 'G', 'A'] ['A', 'S', 'D', 'a', 'D', 'F', 'G', 'A', 'a']

    sub(pat,repl,string)用repl替换pat匹配项

    print(re.sub('a','A','abcasd')) pat=re.compile('a') print(pat.sub('A','abcasd')) pat=re.compile(r'www.(.*)..{3}') print(pat.match('www.dxy.com').group(1)) print(re.sub(r'www.(.*)..{3}','r','hello,www.dxy.com')) 输出: AbcAsd AbcAsd dxy hello,r

    group获取子模式的匹配项

    import re a = "123abc456" print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(0)) print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(1)) print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(2)) print(re.search("([0-9]*)([a-z]*)([0-9]*)",a).group(3)) 输出: 123abc456 123 abc 456

    "."通配符,除换行符外的任意的一个字符

    pat=re.compile('.') print(pat.match('abc')) 输出:<re.Match object; span=(0, 1), match='a'> print(pat.match('abc').group()) 输出:a print(pat.search('abc').group()) 输出:a pat=re.compile('.') print(pat.search('abc.efg').group()) print(pat.findall('abc.efg')) 输出: a ['a', 'b', 'c', '.', 'e', 'f', 'g']

    […]字符集合,匹配里面的任意一个元素

    pat=re.compile('[abc]') print(pat.match('axbycz').group()) print(pat.search('axbycz').group()) print(pat.findall('axbycz')) 输出: a a ['a', 'b', 'c']

    \d 数字

    pat=re.compile('\d') print(pat.search('ax1by2cz3').group()) print(pat.findall('ax1by2cz3')) 输出: 1 ['1', '2', '3']

    \D 数字

    pat=re.compile('\D') print(pat.search('ax1by2cz3').group()) print(pat.findall('ax1by2cz3')) 输出: a ['a', 'x', 'b', 'y', 'c', 'z']
    Processed: 0.010, SQL: 9