[Python] 正则表达式re

【资源】

  1. 官方说明:help(re) #命令行查看官方解释
  2. 可视化正则表达式
  3. 教程

【特殊字符】

常用功能说明
“^”开头“^x”,以x字符开头
“$”结尾“x$”,以x字符结尾
“.”任意字符(≥0)
“()”提取子串math_obj.group(1) #匹配成功后,拿出第一个括号里的子串
“?”非贪婪匹配详细说明
“|”或者
“[]”1. 中括号里的任意一个
2. 可以用区间
3. 中括号里的^代表非
4. 中括号里的字符没有特殊意义
1. "[abcd]"
2. "[0-9a-z]"
3. “[^1]“表示≠1
4. “[.*]”,表示字符”.*”,不表示任意字符并重复多次

【字符】

名称说明
“\s”空格
“\S”与"\s"相反,只要不是空格都可以
“\w”为任意字符,等同于[A-Za-z0-9_]
“\W”与"\w"相反,不为A-Z、a-z、0-9
“[\u4E00-\u9FA5]”汉字
“\d”数字

【出现次数】

名称功能说明
“*”重复次数“x*”,x可以重复任意多次(x出现≥0次)
“+”至少一次“x+”,x至少出现一次
“{2}”出现次数“x{2}”,x出现2次
“{2, }”出现次数“x{2,},x出现2次以上”
“{2,5}”出现次数“x{2,5}”,x出现2-5次

【贪心Greedy】将匹配尽可能多的重复
【非贪婪模式】"?()":()里的字符从右往左第一个

>>> import re
>>> line = "texttexttteexxxtt"
# 模式串".*(t.*t).*"
	# 【猜想】满足条件的所有可能:
		# 'texttexttteexxxtt'
		# 'ttexttteexxxtt'
		# 'texttteexxxtt'
		# 'ttteexxxtt'
		# 'tteexxxtt'
		# 'teexxxtt'
		# 'tt'
		# 't'
		# 'tt'
		# 'texttexttteexxxt'
		# 'texttexttt'
		# 'texttextt'
		# 'texttext'
		# 'textt'
		# 'text'
>>> match_obj = re.match(".*(t.*t).*", line) #默认贪婪
>>> match_obj.group(1)
'tt'
>>> match_obj = re.match(".*?(t.*t).*", line) #左边界非贪婪
>>> match_obj.group(1)
'texttexttteexxxtt'
>>> match_obj = re.match(".*(t.*t?).*", line) #右边界非贪婪
>>> match_obj.group(1)
't'
>>> match_obj = re.match(".*?(t.*t?).*", line) #左右边界非贪婪
>>> match_obj.group(1)
'texttexttteexxxtt'

例子

【提取年月日】 "(\d{4}[年/-]\d{1,2}([月/-]\d{1,2}|[月/-]$|$))"

line = "2001年6月1日"
line = "2001/6/1"
line = "2001-6-1"
line = "2001-06-01"
line = "2001-06"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

geodoer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值