re 模块 - 图1


    1. import re
    2. print(re.findall('123', 'aAbBcC123_%$#-*/123')) # 匹配一样的
    3. # ['123', '123']
    4. print(re.findall('\w', 'aAbBcC123_%$#-*/')) # 只取字母、数字、下划线
    5. # ['a', 'A', 'b', 'B', 'c', 'C', '1', '2', '3', '_']
    6. print(re.findall('\W', 'aAbBcC123_%$#-*/')) # 不取字母、数字、下划线
    7. # ['%', '$', '#', '-', '*', '/']
    8. print(re.findall('\s', 'aA\rbB\tcC\n123\f_%$ #-*/')) # 取空字符
    9. # ['\r', '\t', '\n', '\x0c', ' ', ' ']
    10. print(re.findall('\S', 'aA\rbB\tcC\n123\f_%$ #-*/')) # 不取空字符
    11. # ['a', 'A', 'b', 'B', 'c', 'C', '1', '2', '3', '_', '%', '$', '#', '-', '*', '/']
    12. print(re.findall('\d', 'aA\rbB\tcC\n123\f_%$ #-*/')) # 匹配数字
    13. # ['1', '2', '3']
    14. print(re.findall('\D', 'aA\rbB\tcC\n123\f_%$ #-*/')) # 匹配非数字
    15. # ['a', 'A', '\r', 'b', 'B', '\t', 'c', 'C', '\n', '\x0c', '_', '%', '$', ' ', ' ', '#', '-', '*', '/']
    16. print(re.findall('\Axio', 'xio is xio666')) # 只匹配开头的
    17. print(re.findall('^xio', 'xio is xio666')) # 只匹配开头的
    18. # ['xio']
    19. print(re.findall('yyy\Z', 'xio is xio666 yyy')) # 只匹配结尾的,但字符串不能换行
    20. print(re.findall('yyy$', 'xio is xio666 yyy')) # 只匹配结尾的
    21. # ['yyy']
    22. print(re.findall('^xio$', 'xio'))
    23. # ['xio']
    1. import re
    2. # 重复匹配:| . | * | ? | .* | .*? | + | {n,m} |
    3. # .:匹配出了\n之外任意一个字符,指定re.DOTALL之后才能匹配换行符
    4. print(re.findall('a.b', 'a1b a2b a b abbbb a\nb a\tb a*b'))
    5. # ['a1b', 'a2b', 'a b', 'abb', 'a\tb', 'a*b']
    6. print(re.findall('a.b', 'a1b a2b a b abbbb a\nb a\tb a*b', re.DOTALL))
    7. print(re.findall('a.b', 'a1b a2b a b abbbb a\nb a\tb a*b', re.S))
    8. # ['a1b', 'a2b', 'a b', 'abb', 'a\nb', 'a\tb', 'a*b']
    9. print(re.findall('a..b', 'a1b a2b a b abbbb a\nb a\tb a*b', re.DOTALL))
    10. # ['abbb']
    1. import re
    2. # *:左侧字符重复0次或无穷次
    3. print(re.findall('ab*', 'a ab abb abbbbb bbbbb'))
    4. # ['a', 'ab', 'abb', 'abbbbb']
    5. # +:左侧字符重复1次或无穷次
    6. print(re.findall('ab+', 'a ab abb abbbbb bbbbb'))
    7. # ['ab', 'abb', 'abbbbb']
    8. # ?:?左侧字符重复0次或者1次
    9. print(re.findall('ab?', 'a ab abb abbbbb bbbbb'))
    10. # ['a', 'ab', 'ab', 'ab']
    11. # {n,m}:左侧字符重复n次到m次,单独一个n代表只出现n次
    12. print(re.findall('ab{2,5}', 'a ab abb abbb abbbb abbbbbbbb bbbbb'))
    13. # ['abb', 'abbb', 'abbbb', 'abbbbb']
    1. import re
    2. # 联系题:把整形和浮点型取出来
    3. print(re.findall('\d+\.?\d*', "asdfasdf123as1.13dfa12adsf1asdf3"))
    4. # ['123', '1.13', '12', '1', '3']
    1. import re
    2. # []:匹配指定字符一个
    3. print(re.findall('a[0-5]b', 'a1b a3b aXb a b a\nb')) # ['a1b', 'a3b']
    4. print(re.findall('a[012345]b', 'a1b a3b aXb a b a\nb')) # ['a1b', 'a3b']
    5. print(re.findall('a[052314]b', 'a1b a3b aXb a b a\nb')) # ['a1b', 'a3b']
    6. print(re.findall('a[0-5a-zA-Z]b', 'a1b a3b aXb a b a\nb')) # ['a1b', 'a3b', 'aXb']
    7. print(re.findall('a[^0-5a-zA-Z]b', 'a1b a3b aXb a b a\nb')) # ['a b', 'a\nb'] ^取反的意思