正则表达式(二) 元字符

1.匹配单个字符与数字

1.1 通配符"."

. : 匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。

>>>import re
>>>a = re.findall('o.', 'www.runoob.com')
>>>a
["oo","om"]

1.2 被中括号括起来的字符

  • [0123456789] : []是字符集合,表示匹配方括号中所包含的任意字符
  • [awen] : 匹配 'a' , 'w', 'e','n'中的任意字符
  • [0-9] : 匹配任何一个数字.类似于[0123456789]
  • [a-z] : 匹配任何小写字母
  • [A-Z] : 匹配任何大写字母
  • [a-zA-Z0-9] : 匹配任何字母及数字
  • [^abcd] : 除了abcd字母以外的所有字符,[ ] 中的 ^ (脱字符)表示非,匹配不在[]中的字符
  • [^0-9] : 匹配除了数字以外的字符

1.3 用转义字符匹配单个字符

  • \d : 匹配数字, 效果同 [0-9]
  • \D : 匹配非数字,效果同 [^0-9]
  • \w : 匹配数字,字母,下滑钱 ,效果同[0-9a-zA-Z_]
  • \W : 匹配非数字,字母,下滑钱 ,效果同[^0-9a-zA-Z_]
  • \s : 匹配任何空白字符,包括空格,换页符,换行符,回车符,制表符等等, 等价于[ \f\n\r\t]
  • \S : 匹配非空字符,等价于 [^ \f\n\r\t]

\f(换页符) \n(换行符) \r(回车符) \t(制表符)


2.描述符,边字界符

  • ^ : 行首匹配, 和 在 [ ]字符集合最中的^ 不是一个意思
  • $ : 行尾匹配
  • \A : 匹配字符串的开始,它和 "^"的区别是, "\A" 只匹配整个字符串的开头,即使在 " M"模式下, 它也不会匹配其他行的行首
  • \Z : 匹配字符串的结束,它和 "$"的区别是, "\Z" 只匹配整个字符串的结尾,即使在 " M"模式下, 它也不会匹配其他行的行尾
  • \b : 匹配一个单词边界,也就是指单词和空格间的位置, 例如, "er\b" 可以匹配"nerver"中的"er' , 不能匹配"verb"中的er
  • \B : 匹配非单词边界,
    例如, "er\B" 不能匹配"nerver"中的"er' , 可以匹配"verb"中的er

3.匹配多行字符

说明 (以下的x , y ,z均为假设的普通字符,不是正则表达式元字符)

  • (xyz) : 匹配括号中的xyz(作为一组整体去匹配)
  • x? : 匹配0个或1个x,非贪婪方式
  • x* : 匹配0个或者任意多个x,延伸 .*表示匹配0个或者任意多个任意字符(除换行符以外)
  • x+ : 匹配至少一个x(1个或多个)
  • x{n} : 匹配确定的n个x,(n是一个非负整数) 注意: 是连续的
  • x{n,} : 匹配至少n个x,(n是一个非负整数) 注意: 是连续的
  • x{n,m} : 匹配至少n个x, 最多m个x(n,m是一个非负整数,n <= m) 注意: 是连续的
  • x|y : |表示或, 这里指 x 或y
posted @ 2018-04-25 10:18  数据菜鸟  阅读(109)  评论(0)    收藏  举报