re正则表达式

正则表达式实用目的:1.判断用户输入的数据是否符合要求   2.爬取数据筛选自己想要的信息

匹配单个字符:

字符 功能 
. 匹配任意1个字符(除了\n)
[] 匹配[]中列举的字符中的一个
\d   匹配数字,即0-9
\D 匹配非数字,即不是数字
\s 匹配空白,即空格 tab键
\S   匹配非空白
\w 匹配单词字符,即a-z,A-Z,0-9,_
\W   匹配非单词字符

 

匹配多个字符:

字符 功能
* 匹配前一个字符出现0次或者无限次,即可有可无
+ 匹配前一个字符出现1次或者无限次,即至少一次
匹配前一个字符出现1次或者0次,即要么有1次,要么没有
{m} 匹配前一个字符出现m此
{m,n} 匹配前一个字符出现从m到n次

 

匹配开头结尾:

字符 功能
^ 匹配字符串开头
$ 匹配字符串结尾

 

匹配分组:

字符 功能
| 匹配左右任意一个表达式
(ab) 将括号中字符作为一个分组/括号好可以单独取出括号内的内容
\num 引用分组num匹配到的字符串
(?P<name>) 分组起别名
(?P=name) 引用别名为name分组匹配到的字符串

 

re高级用法:

1.math(pattern, string [,flags]):从字符串开始处匹配

  pattern   模式字符串(正则表达式)

  string      要匹配的字符串

  [flags]     可选参数,表示标志位,用于控制匹配方式。比如是否区分大小写

2.sarch(pattern, string [,flags]):在整个字符串中搜索第一个匹配的值

3.findall(pattern, string [,flags]):在整个字符串中搜索所有符合正则表达式的字符串 —— 返回一个列表

4.sub(pattern, repl, string [,count] [,flags]):替换字符串

  count   可选参数,表示匹配后替换的最大次数

  repl    要替换成的字符串(也可以是一个函数),例:

 1 import re
 2 
 3 
 4 def add(temp):
 5     # 通过匹配到的字符串的引用调用group方法可以取匹配的字符串的值,即"997"和"99"
 6      str_num = temp.group()
 7      new_num = int(str_num) + 1
 8     # 返回什么,正则表达式中匹配的字符串替换成什么
 9      return str(new_num)
10 
11 
12 # sub中替换的内容为一个函数时,会将正则表达式匹配到的字符串的引用传入到函数内部
13 ret = re.sub(r'\d+', add, "years = 997")
14 print(ret)
15 
16 ret = re.sub(r'\d+', add, "years = 99")
17 print(ret)
18 
19 # 结果:
20 years = 998
21 years = 100

5.split(pattern, string, [,maxsplit] [,flags]]:分割字符串,例:

  按冒号(:)或者空格 将字符串切割,返回一个列表

1 import re
2 
3 ret = re.split(r':| ', 'https://www. baidu. com')
4 print(ret)
5 
6 # 结果:
7 ['https', '//www.', 'baidu.', 'com']
posted @ 2020-04-13 23:19  组装梦想  阅读(338)  评论(0编辑  收藏  举报