正则表达式初识

正则表达式--元字符

  • [ ]
-用来指定一个字符集合(字符直接是“或”的关系,不是一个特定的字符串,跟‘abc’不同):[abc],[a-z]
-在字符集中,元字符$不起作用[abc$],[$abc],元字符^在字符串尾不起作用 [abc^],就是普通字符。
-元字符在字符集首表示匹配补集,[^abc]就是匹配除了a,b,c以外的字符。
  • ^
-匹配行首,位于字符串首。制定规则res = r'^abc',为匹配行首是abc;规则s = r'^[abc]',为匹配行首是a,b,c.

  • $
-匹配行尾,位于字符串尾。定规则res = r'abc$',为匹配行尾是abc;规则s = r'[abc]$',为匹配行尾是a,b,c.
  • \
-反斜杠后可以加不同的字符表示不同的特殊意义
-也可以取消元字符:\\ 或\[
\d 匹配任何十进制数,相当于[0-9];
\D 匹配任何非十进制数,相当于[^0-9];
\s 匹配任何空白字符:相当于[\t\n\r\f\v];
\S 匹配任何非空白字符:相当于[^\t\n\r\f\v];
\d 匹配任何字母数字字符,相当于[a-zA-Z0-9_];#注:难怪很多密码或邮箱只允许下划线和字母数字。
\D 匹配任何非字母数字字符,相当于[^a-zA-Z0-9_]。
	举个栗子:
		import re
		r = r'010-\d\d\d\d\d\d\d\d'#电话号码
		re.findall(r, '010-87654321')

		结果
		[010-87654321]#匹配电话号码格式,输出

  • 重复

-正则表达式第一功能是能够匹配不定长的字符集,另一个功能就是可以指定正则表达式的一部分的重复次数。
  • *
-指定前一个字符可以被匹配0次或更多次,而不是只有一次。匹配引擎会试着重复尽可能多的次数。
  • +
-表示匹配一次或更多次。
-*和+之间的不同在于:*下,字符可以不出现(匹配0次),而+则要求至少出现一次。
  • ?
-匹配一次或零次,可以认为用于标记某事物是可选的(0 or 1)。
	再一个栗子:
	>>>r = r'^010-?\d{8}'#电话号码的规则,有人不会打-,所以用-?表示-可选
	>>>re.findall(r, '010-12345678')
	['010-12345678']
  • {m,n}
-其中m和n是十进制整数。意思是至少有m个重复,至多到n次重复。
	三只栗子:
	>>>r = r'a{1,3}'
	>>>re.findall(r, 'aaaaa')
	['aaa', 'aa']#aaaaa是5个a,而不是一个组合
-忽略m,默认下边界为0 ;忽略n,会使上边界无穷大。
-{0, }等于*,{1, }等于+,而{0,1}则等于?。所以在应用中,优先选择*,+,?.















  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值