2.1 python文本处理-正则表达式

python正则模块介绍

标准库模块 re

模块方法

# 将正则表达式样式编译成一个正则对象。一般用于多次使用正则对象的场景

re.compile(pattern)

# 扫描string字符串并查找符合patten样式的第一个位置,返回对应的 Match 结果,否则返回 None

re.search(patten, string)

# 如果 string 开头的零个或多个字符与正则表达式 pattern 匹配,返回对应的 Match 结果,否则返回 None

re.match(patten, string)

# 整个string余表达式patten样式匹配,返回对应的 Match 结果,否则返回 None

re.fullmatch(patten, string)

match结果指的是返回的Match对象,Match对象的group方法可以取出匹配到的结果

正则表达式语法

^: 指开头

$:指结尾

+:表示匹配一次或多次

?:表示匹配0或1次

*:表示匹配0或任意次

{n}:表示匹配指定次数

{m,}:至少匹配m次

{m, n}:匹配m至n次

.:匹配除‘\n’以外的任意单个字符

\d: 数字

\w:包括下划线的任何单词字符,等价于[a-zA-Z0-9_]

\W:非单词字符

\s:空白字符,包括空格、制表符、换页符等

\b:单词边界,例如,“er\b”可以匹配“never”中的“er”,但不能匹配“verb”中的“er

\B:非单词边界

a|b:匹配a或b

(patten):匹配并获取结果

(?:patten):匹配但不获取结果

(?Ppatten):匹配并获取结果,并命名为name,便于match.group进行获取查询

示例

compile + search

>>> import re
>>> pattern = "\d+"
>>> obj = re.compile(pattern)
>>> res = obj.search("a12b13c14")
>>> res

match

>>> re.match("\w\d+", "a12b13c14")

>>> re.match("\d+", "a12b13c14")

None
>>> 

group

>>> res = re.match("(\w+):(\d+)", "bob:3,allen:10")
>>> res.group

>>> res.group(0)
'bob:3'
>>> res.group(1)
'bob'
>>> res.group(2)
'3'

常见的正则表达式写法

正则表达式 场景
\d{4}-\d{2}-\d{2} 形如 YYYY-MM-DD样式的日期格式
^[A-Z][a-z ]+

以大写字母开头,且单词其他部分为小写

[a-zA-Z] 匹配英文字母

^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$

email
[\u2E80-\u9FFF] 汉字

参考文档

正则表达式手册

re --- 正则表达式操作 — Python 3.12.1 文档

你可能感兴趣的:(Python,python)