python基础(十三):正则表达式、RegexObject、MatchObject、Group

ctrl+f 运行文本文件正则表达式

概念

regular expression
文本形式,描述搜索文本时匹配一个或多个字符串
场景:数据验证、文本扫描、文本提取、文本替换、文本分割

语法

字面值

普通字符
转义:\ ^ $ . | ? * + () [] {}

元字符

匹配

单字

预定义元字符

  • . 除\n外的所有字符
  • \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_]

批量备选

| yes|no

量词(字符、元字符、字符集重复)

?:0或1次
*:0或1次
+:1或多次
特定

  • {n,m} 范围次数
  • {n} n次
  • {n,} 至少n次

贪婪与非贪婪

贪婪(默认):尽量匹配最大范围结果
非贪婪

  • 尽量匹配最小的范围结果
  • 方法:量词后追加?
  • ?? *? +?

边界匹配

^ 行首
$ 行尾
\b 单词边界
\B 非单词边界
\A 输入开头
\Z 输入结尾
注:上下文差异会有不同表现

python正则表达式

模块:import re

RegexObject

模式对象

表现编译后的正则表达式(编译为字节码并缓存)

编译 re.compile(r’模式’)

r:确保不会转义

.findall()

查找所有非重叠匹配项 返回list

>>>import re
>>>text = 'Tom is 8 years old.Mike is 25 years old'
>>>pattern = re.compile('\d+')
>>>pattern.findall(text)
['8', '25']
>>>re.findall('\d+',text)
['8', '25']

注释:\d数字,\d+多个数字

>>>import re
>>>s = "\\author:Tom"
>>>pattern = re.compile('\\author')
>>>pattern.findall(s)
[]
>>>pattern = re.compile('\\\\author')
>>>pattern.findall(s)
['\\author']
>>>pattern = re.compile(r'\\author')
import re
text = 'kitty is 12 years old.Mike is 23 years old.Amy is 80 years old'
pattern = re.compile(r'\d+')
pattern.findall(text)
['12', '23', '80']
p_name = re.compile(r'[A-Z]')
p_name.findall(text)
['M', 'A']
p_name = re.compile(r'[A-Z]\w+')
p_name.findall(text)
['Mike', 'Amy']

.match(string[,pos[,endpos]])

匹配:仅从起始位置
返回MatchObject

.search(string[,pos[,endpos]])

任意位置搜索
返回 MatchObject

>>>import re
>>>pattern = re.compile(r'<html>')
>>>text = '<html><head></head><body></body></html>'
>>>pattern.match(text)
<re.Match object; span=(0, 6), match='<html>'>
>>>text2 = ' <html><head></head><body></body></html>'
>>>pattern.match(text2)
>>>pattern.match(text2,1)
<re.Match object; span=(1, 7), match
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值