正则表达式初识

来源:互联网 发布:美国注册营养师 知乎 编辑:程序博客网 时间:2024/04/29 22:08

正则表达式--元字符

  • [ ]
-用来指定一个字符集合(字符直接是“或”的关系,不是一个特定的字符串,跟‘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 rer = 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 0
原创粉丝点击