首页 > 其他 > 详细

常用模块之正则表达式模块其一

时间:2020-04-02 09:20:31      阅读:70      评论:0      收藏:0      [点我收藏+]

一、单个匹配

import re
print(re.findall(\w, aAbc123_*()-=))  # 规则为 “数字或字母或下划线” 结果为 [‘a‘, ‘A‘, ‘b‘, ‘c‘, ‘1‘, ‘2‘, ‘3‘, ‘_‘]
print(re.findall(\W, aAbc123_*()-= ))  # 规则为 “非数字且非字母且非下划线” 结果为 [‘*‘, ‘(‘, ‘)‘, ‘-‘, ‘=‘, ‘ ‘]
print(re.findall(\s, aA\rbc\t\n12\f3_*()-= ))  # 规则为 “空格类型” 结果为 [‘\r‘, ‘\t‘, ‘\n‘, ‘\x0c‘, ‘ ‘, ‘ ‘]
print(re.findall(\S, aA\rbc\t\n12\f3_*()-= ))  # 规则为 “非空格类型”  结果为 [‘a‘, ‘A‘, ‘b‘, ‘c‘, ‘1‘, ‘2‘, ‘3‘, ‘_‘, ‘*‘, ‘(‘, ‘)‘, ‘-‘, ‘=‘]
print(re.findall(\d, aA\rbc\t\n12\f3_*()-= ))  # 规则为 “数字” 结果为 [‘1‘, ‘2‘, ‘3‘]
print(re.findall(\D, aA\rbc\t\n12\f3_*()-= ))  # 规则为 “非数字” 结果为 [‘a‘, ‘A‘, ‘\r‘, ‘b‘, ‘c‘, ‘\t‘, ‘\n‘, ‘\x0c‘, ‘_‘, ‘*‘, ‘(‘, ‘)‘, ‘-‘, ‘=‘, ‘ ‘]
print(re.findall(\Aalex,alexis alex sb))  # 规则为 首字符为 ‘alex‘ 结果为 [‘alex‘]
print(re.findall(sb\Z, 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\nb a\tb a*b))
# 规则为 . 可以是任意除了 \n 的字符,结果为 [‘a1b‘, ‘a2b‘, ‘a b‘, ‘abb‘, ‘a\tb‘, ‘a*b‘]
print(re.findall(a.b, a1b a2b a b abbbb a\nb a\tb a*b, re.DOTALL))
# 规则为 可以用 re.DOTALL 声明 . 也可以代表\n 结果为 [‘a1b‘, ‘a2b‘, ‘a b‘, ‘abb‘, ‘a\nb‘, ‘a\tb‘, ‘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\nb, 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\nb, re.DOTALL))
# 规则为 a与b之前的字符在[]范围外,结果为 [‘a b‘, ‘a\nb‘]

 

常用模块之正则表达式模块其一

原文:https://www.cnblogs.com/caoyu080202201/p/12617019.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!