Python字符串过滤器:正则表达式Regular Expression

leagueandlegends / 2024-04-24 / 原文

一、什么是正则表达式

正则表达式是按照正确的既定规则、一种全语言类型Python、Java、JavaScript、PHP通用的表达式。

用途:

(1)根据规则抓取数据:配合爬虫、根据规则在文本中提取数据

(2)根据规则验证数据:验证手机号、验证邮箱、验证身份证

二、如何在Python中使用正则表达式

在Python中正则表达式的1个模块+2个方法需要学习

re模块 re=regular expression

import re

 re方法一:根据规则查找/提取内容 

re.findall(查找规则,匹配内容)

 返回结构化数据,两个参数,形式参数为pattern(规律)string(需要查找/匹配的字符串)

re方法二:根据规则匹配/验证内容

re.match(匹配规则,匹配内容)

返回布尔,两个参数,形式参数为pattern(规律)string(验证字符串)

三、正则表达式的规则

正则表达式普通字符:

(1)普通字符是我们常规认识的a-z A-Z 0-9中文以及标点符号

正则表达式特殊符号/通配符/元字符,常用特殊字符包含:

(1)直接规则字符:. +  *  ?  \d  \D  \w  \W  \s   \S  ^

(2)辅助规则字符(){} []

这几个括弧不是数据类型

字符代表含义

. 匹配除了换行以外的任何一个字符
+ 匹配前边子表达式规则字符任意次数(至少出现一次)
* 匹配前边子表达式规则字符任意次数包含0次
尽可能少匹配,禁止贪婪模式
\d 匹配一个数字
\D 匹配一个非数字
\w 匹配包括下划线的任何单词字符
\W 匹配任何非单词字符
\s 匹配任何空白字符
\S 匹配任何非空白字符
^ 字符串开头匹配
$ 字符串结束匹配
[] 筛选条件
() 分组(作为一个整体)
{} 出现次数 范围/固定

特别注意^符号与[]搭配使用代表"非" 如[^a],非a全取   

举例:任务提起老师的姓名

import re

txt='''万门大学老师:宁夫
       万门大学老师:正正
       万门大学老师:陪陪'''
pattern=r":.*"
res=re.findall(pattern,txt)
print(res)

 

 输出结果:

import re

txt='''万门大学老师:宁夫
       万门大学老师:正正
       万门大学老师:陪陪'''
pattern=r":(.*)"
res=re.findall(pattern,txt)
print(res)

 输出结果:

举例:提取电话号码

import re

info='''mike,18391911111,39
      lin,13932111111,40
      danial,15932431115,45
      frank,1A932431115,45'''

pattern=r"\d{11}"
result=re.findall(pattern,info)
print(result)