ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

re模块简介及元字符和转义字符

2021-03-28 20:01:39  阅读:377  来源: 互联网

标签:代表 匹配 re 转义字符 print alex findall 元字符


import re

'''
.代表通配符,除了\n不能匹配外,其它全部都能匹配,一个点代表一个字符
^代表字符串开头进行匹配,只能放在最前面
$代表字符串结尾进行匹配,只能放在最后面
*代表0到无穷次
+代表1次到无穷次
?代表0次到1次
{}代表自行控制多少次,{0,} == *,{1,} == +,{0,1} == ?,{6}代表6次,{1,6}代表1,2,3,4,5,6次
*****注意:前面的*,+,?等都是贪婪匹配,也就是尽可能多的匹配;后面加?号使其变成惰性匹配,比如*?匹配0个,+?匹配1个*****
[]代表字符集,或的作用;
'''

# .代表通配符,除了\n不能匹配外,其它全部都能匹配,一个点代表一个字符
# print(re.findall('a..x', 'fialexskdlfjaghx'))

# ^代表字符串开头进行匹配,只能放在最前面
# print(re.findall('^b.*b$', 'bslkafdsallkb'))
# print(re.findall('^abc', 'abcsss'))

# $代表字符串结尾进行匹配,只能放在最后面
# print(re.findall('.+b$', 'asdfb'))

# *代表0到无穷次
# print(re.findall('abc*', 'abcccccbbabc'))
# print(re.findall('a*', 'abakjalaaoaaia')) # 结果为['a', '', 'a', '', '', 'a', '', 'aa', '', 'aa', '', 'a', ''],*代表0到无穷次,那么不是a也代表匹配上了,因为0它也取,只不过为空
# print(re.findall('d*$', 'dddlslslsdddd'))
# print(re.findall('^d*', 'dddlslslsdddd'))

# +代表1次到无穷次
# print(re.findall('alex*', 'asddsaale')) # *代表0到无穷次,那么x可以没有,所以ale可以取出来
# print(re.findall('alex+', 'asddsaale')) # +代表1到无穷次,那么x最少要有一个,所以alex取不出来

# ?代表0次到1次
# print(re.findall('alex?', 'asddsafale'))
# print(re.findall('alex?', 'asddsalexxxxxxf'))

# {}代表自行控制多少次,{0,} == *,{1,} == +,{0,1} == ?,{6}代表6次,{1,6}代表1,2,3,4,5,6次;*****大括号里的逗号不能有空格*****
# print(re.findall('alex{0,}', 'ahskalefdsfd'))
# print(re.findall('alex{1,}', 'ahskalexxxfdsfd'))
# print(re.findall('alex{2,4}', 'alexxfkdjalexxxfkdialexjaleiialexxxx'))
# print(re.findall('alex{3}', 'alexxxxx'))

# 惰性匹配--->*?匹配0个,+?匹配一个
# print(re.findall('alex*?', 'ale'))
# print(re.findall('alex*?', 'alex'))
# print(re.findall('alex*?', 'alexxxx'))
# print(re.findall('alex+?', 'ale'))
# print(re.findall('alex+?', 'alex'))
# print(re.findall('alex+?', 'alexxxx'))

# []代表字符集,或的作用
# print(re.findall('www[baidu,]', 'wwwbwwwawwwiwwwdwwwuwww,')) # 里面的每一个字符都当作一次匹配,包括逗号:['wwwb', 'wwwa', 'wwwi', 'wwwd', 'wwwu', 'www,']
# print(re.findall('[abc.*+]', 'aa.bs*cs+')) # ['a', 'a', '.', 'b', '*', 'c', '+']

# 在字符集里有功能的符号:- ^ \
# print(re.findall('[a-z]', '123abc456qweRTY')) # 代表小写字母a-z
# print(re.findall('[A-Z]', '123ABC456QWErty')) # 代表大写字母A-Z
# print(re.findall('[0-9]', '001122q3w4e5A6S7D89')) # 代表数字0-9
# print(re.findall('q[^a-z]', 'qaqbqcqdqeqfq0q1qAq.q*q!q')) # 非,除小写字母a-z以外的都匹配
# *****print(re.findall('\([^()]*\)', '12+(34*6+2-5*(2-1))')) # 计算器作业---提取括号里的表达式---没有理解透到底怎么回事,需重新复习理解*****
'''
元字符之转义符\
反斜杠后边跟元字符去除特殊功能,比如\.
反斜杠后边跟普通字符实现特殊功能,比如\d

\d 匹配任何十进制数;它相当于类 [0-9]。
\D 匹配任何非数字字符;它相当于类 [^0-9]。
\s 匹配任何空白字符;它相当于类 [ \t\n\r\f\v]。
\S 匹配任何非空白字符;它相当于类 [^ \t\n\r\f\v]。
\w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。下划线也可以匹配到
\W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]
\b 匹配一个特殊字符边界,比如空格,&,#等
'''
# print(re.findall('\d+', '1a2b34c56d78f90g'))
# print(re.findall('\D+', '1a2b34c56d78f90gw'))
# print(re.findall('\s+', '\tabc\n123'))
# print(re.findall('\S+', '\tabc\n123'))
# print(re.findall('\w+', '12,ab.00*cd?你好@'))
# print(re.findall('\W+', '12,ab.00*cd?你好@'))
# print(re.findall('www\.baidu\.com', 'www.baidu.com')) # 如果不加转义符,后面的除了\n不能匹配外,其它都能匹配到

print(re.findall('I', 'I am LIST')) # ['I', 'I']
print(re.findall('^I', 'I am LIST')) # ['I']
print(re.findall('^I', 'hello I am LIST')) # []
print(re.findall('I\b', 'hello I am LIST')) # []
print(re.findall(r'I\b', 'hello I am LIST')) # ['I'],r=rawstring,原生字符串,不做任何转义
print(re.findall('I\\b', 'hello I am LIST')) # ['I']

print(re.findall('c\\\\l', 'abc\le')) # \l<--->re模块\\l<--->python解释器\\\\l;结果['c\\l'],其实是一个\,但是python又一次转义多加了一个\
print(re.findall(r'c\\l', 'abc\le')) # \l<--->re模块\\l<--->python解释器\\l

标签:代表,匹配,re,转义字符,print,alex,findall,元字符
来源: https://www.cnblogs.com/xuewei95/p/14589659.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有