常用模块之正则表达式模块
Posted caoyu080202201
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用模块之正则表达式模块相关的知识,希望对你有一定的参考价值。
一、单个匹配
import re print(re.findall(‘w‘, ‘aAbc123_*()-=‘)) # 规则为 “数字或字母或下划线” 结果为 [‘a‘, ‘A‘, ‘b‘, ‘c‘, ‘1‘, ‘2‘, ‘3‘, ‘_‘] print(re.findall(‘W‘, ‘aAbc123_*()-= ‘)) # 规则为 “非数字且非字母且非下划线” 结果为 [‘*‘, ‘(‘, ‘)‘, ‘-‘, ‘=‘, ‘ ‘] print(re.findall(‘s‘, ‘aA bc 12f3_*()-= ‘)) # 规则为 “空格类型” 结果为 [‘ ‘, ‘ ‘, ‘ ‘, ‘x0c‘, ‘ ‘, ‘ ‘] print(re.findall(‘S‘, ‘aA bc 12f3_*()-= ‘)) # 规则为 “非空格类型” 结果为 [‘a‘, ‘A‘, ‘b‘, ‘c‘, ‘1‘, ‘2‘, ‘3‘, ‘_‘, ‘*‘, ‘(‘, ‘)‘, ‘-‘, ‘=‘] print(re.findall(‘d‘, ‘aA bc 12f3_*()-= ‘)) # 规则为 “数字” 结果为 [‘1‘, ‘2‘, ‘3‘] print(re.findall(‘D‘, ‘aA bc 12f3_*()-= ‘)) # 规则为 “非数字” 结果为 [‘a‘, ‘A‘, ‘ ‘, ‘b‘, ‘c‘, ‘ ‘, ‘ ‘, ‘x0c‘, ‘_‘, ‘*‘, ‘(‘, ‘)‘, ‘-‘, ‘=‘, ‘ ‘] print(re.findall(‘Aalex‘,‘alexis alex sb‘)) # 规则为 首字符为 ‘alex‘ 结果为 [‘alex‘] print(re.findall(‘sb‘,‘ alexis alexsb sb‘)) # 规则为 尾字符为 ‘sb‘ 结果为 [‘sb‘],不可用于多行字符串 print(re.findall(‘^alex‘,‘alexis alex sb‘)) # 规则为 首字符为 ‘alex‘ 结果为 [‘alex‘] print(re.findall(‘sb$‘,‘alexis alex sb‘)) # 规则为 尾字符为 ‘sb‘ 结果为 [‘sb‘] print(re.findall(‘sb$‘,""" alex sb """)) # 规则为 尾字符为 ‘sb‘ 结果为 [‘sb‘],可用于多行字符串
二、重复匹配
import re print(re.findall(‘a.b‘, ‘a1b a2b a b abbbb a b a b a*b‘)) # 规则为 . 可以是任意除了 的字符,结果为 [‘a1b‘, ‘a2b‘, ‘a b‘, ‘abb‘, ‘a b‘, ‘a*b‘] print(re.findall(‘a.b‘, ‘a1b a2b a b abbbb a b a b a*b‘, re.DOTALL)) # 规则为 可以用 re.DOTALL 声明 . 也可以代表 结果为 [‘a1b‘, ‘a2b‘, ‘a b‘, ‘abb‘, ‘a b‘, ‘a b‘, ‘a*b‘] print(re.findall(‘ab*‘, ‘a ab abb abbbbbbbb bbbbbbbb‘)) # 规则为 * 前面的字符为 0到无穷多个,结果为 [‘a‘, ‘ab‘, ‘abb‘, ‘abbbbbbbb‘] print(re.findall(‘ab+‘, ‘a ab abb abbbbbbbb bbbbbbbb‘)) # 规则为 + 前面的字符为 1到无穷多个,结果为 [‘ab‘, ‘abb‘, ‘abbbbbbbb‘] print(re.findall(‘ab?‘, ‘a ab abb abbbbbbbb bbbbbbbb‘)) # 规则为 ?前面的字符为 0个或者1个,结果为 [‘a‘, ‘ab‘, ‘ab‘, ‘ab‘] print(re.findall(‘ab{2,5}‘, ‘a ab abb abbb abbbb abbbbbbbb bbbbbbbb‘)) # 规则为 {2,5}前面的字符为2到5个,结果为 [‘abb‘, ‘abbb‘, ‘abbbb‘, ‘abbbbb‘] print(re.findall(‘a[0-9a-zA-Z]b‘, ‘a1111111b axb a3b a1b a0b a4b a9b aXb a b a b‘, re.DOTALL)) # 规则为 a与b之前的字符在[]范围内,结果为 [‘axb‘, ‘a3b‘, ‘a1b‘, ‘a0b‘, ‘a4b‘, ‘a9b‘, ‘aXb‘] print(re.findall(‘a[^0-9a-zA-Z]b‘, ‘a1111111b axb a3b a1b a0b a4b a9b aXb a b a b‘, re.DOTALL)) # 规则为 a与b之前的字符在[]范围外,结果为 [‘a b‘, ‘a b‘]
以上是关于常用模块之正则表达式模块的主要内容,如果未能解决你的问题,请参考以下文章