- 正则表达式中常用的字符
符号 描述
. 匹配任意一个字符(除了n)
[] 匹配列表中的字符
w 匹配字母、数字、下划线,即 a-z,A-Z,0-9,_
W 匹配不是字母、数字、下划线
s 匹配空白字符,即空格(n,t)
S 匹配不是空白的字符
d 匹配数字,即 0-9
D 匹配非数字的字符
^ 匹配字符串开头
$ 匹配字符串结尾。
b 匹配一个单词的边界
B 匹配非单词的边界
【注】^与[^m]中的“^”的含义并不相同,后者“^”表示“除了….”的意思
2、re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。
3、贪婪模式指 Python 里数量词默认是贪婪的,总是尝试匹配尽可能多的字符。非贪婪模
式与贪婪相反,总是尝试匹配尽可能少的字符,可以使用"*","?","+","{m,n}"后面加上?,使
贪婪变成非贪婪
4、只配置中文
1
2
3
4
5
6
7s = "士大夫卡A 的24东走西顾堪" filtrate = re.compile(u'[^u4E00-u9FA5]') filtered_str = filtrate.sub(r'', s) print(filtered_str) #输出 #士大夫卡的东走西顾堪
5、Python 的 re 模块提供了re.sub用于替换字符串中的匹配项。
1re.sub(pattern, repl, string, count=0, flags=0)
参数:
- pattern : 正则中的模式字符串。
- repl : 替换的字符串,也可为一个函数。
- string : 要被查找替换的原始字符串。
- count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配
1
2
3
4
5
6
7
8
9import re phone = "1-1452839475-4352 #Location oscar retwertqe" # 去掉location前面的字符 num = re.sub(r'^.*[lL]ocation', "location", phone, 1) print("电话号码是: ", num) # 删除非数字(-)的字符串 num = re.sub(r'D', "", phone) print("电话号码是 : ", num)
6、re.compile 函数 :参考Python 正则表达式 | 菜鸟教程
compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。
1re.compile(pattern[, flags])
参数:
-
pattern : 一个字符串形式的正则表达式
-
flags : 可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:
- re.I 忽略大小写
- re.L 表示特殊字符集 w, W, b, B, s, S 依赖于当前环境
- re.M 多行模式
- re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)
- re.U 表示特殊字符集 w, W, b, B, d, D, s, S 依赖于 Unicode 字符属性数据库
- re.X 为了增加可读性,忽略空格和 # 后面的注释
1
2
3
4
5
6
7
8
9pattern = re.compile(r'([a-z]+) ([a-z]+)', re.I) #re.I 忽略大小写 m = pattern.match('Hello World Wide Web') print(m) print(m.group(0)) print(m.groups()) #输出结果: #<re.Match object; span=(0, 11), match='Hello World'> #Hello World #('Hello', 'World')
7、查找到了就打印:
re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。
1
2
3
4
5
6
7
8
9
10
11
12import re line = "Cats are smarter than dogs"; matchObj = re.match( r'dogs', line, re.M|re.I) if matchObj: print "match --> matchObj.group() : ", matchObj.group() else: print "No match!!" matchObj = re.search( r'dogs', line, re.M|re.I) if matchObj: print "search --> searchObj.group() : ", matchObj.group() else: print "No match!!"
最后
以上就是粗心画笔最近收集整理的关于Python笔记3-正则表达式的全部内容,更多相关Python笔记3-正则表达式内容请搜索靠谱客的其他文章。
发表评论 取消回复