Python 正则

正则表达式速查
  • ? 匹配零次或一次前面的字符或分组
  • * 匹配零次或多次前面的字符或分组
  • + 匹配一次或多次前面的字符或分组
  • {n} 匹配n次前面的字符或分组
  • {n,} 匹配n次或更多次前面的字符或分组
  • {,m} 匹配零次或m次前面的字符或分组
  • {n,m} 匹配至少n次,最多m次前面的字符或分组
  • {n,m}? 或 *? 或+? 对前面的字符或分组进行非贪心匹配
  • ^spam 字符串必须以spam开始
  • spam$ 字符串必须经spam结束
  • . 匹配所有字符,换行符除处
  • \d、\w、\s 分别匹配数字、单词、空格
  • \D、\W、\S 分别匹配出数字、单词、空格以外的所有字符
  • [abc] 匹配方括号内的任意字符(如a、b 或c)
  • [^abc] 匹配不在方括号内的任意字符

利用'()'括号分组,使用group(n)\groups()匹配对象方法,从分组中获取匹配的文本:

>>> num = re.compile(r'(\d{4})-(\d{7})')
>>> my = num.search('my number is 0310-5561921')
>>> my.groups()
('0310', '5561921')
>>> my.group(1)
'0310'
>>> my.group(2)
'5561921'

利用 '|' 管道匹配多个分组

# 当希望匹配多个管道中的一个时

>>> name = re.compile(r'lisi|wangwu')
>>> myname = name.search('myname is lisi')
>>> myname.group()
'lisi'
>>> myname = name.search('my name is wangwu,your name is lisi')
>>> myname.group()
'wangwu'

利用 '?' 实现可选匹配

>>> num = re.compile(r'(\d{4}-)?\d{7}')
>>> mynum = num.search('0310-5561921')
>>> mynum.group()
'0310-5561921'
>>> mynum = num.search('5561921')
>>> mynum.group()
'5561921'

seach()方法:返回一个match对象,包含被查找字符串的第一次匹配文本
findall()方法:返回一组字符串,包含被查找对象的所有区配

>>> num = re.compile(r'\d{4}-\d{7}')
>>> num.findall("my host num is '0311-5561931',my work num is '0310-5923111'")
['0311-5561931', '0310-5923111']

转载于:https://www.cnblogs.com/lijunjiang2015/p/7838044.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值