Python中的正则表达式基础

1.原子

原子是正则表达式中最基本的组成单位,每个正则表达式中至少包含一个原子。

常见的原子类型有:

  • 普通字符作为原子 如:a b c 字母
  • 非打印字符作为原子 如:\n \t
  • 通用字符作为原子 如:\d \D \w \W \s \S
  • 原子表 如:多个原子拼接在一起




非打印字符:


\cx :匹配由x指明的控制字符。 x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。例如, \cM 匹配一个 Control-M 或回车符。
\f :匹配一个换页符。等价于 \x0c 和 \cL。
\n :匹配一个换行符。等价于 \x0a 和 \cJ。
\r :匹配一个回车符。等价于 \x0d 和 \cM。
\s :匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S :匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t :匹配一个制表符。等价于 \x09 和 \cI。

\v :匹配一个垂直制表符。等价于 \x0b 和 \cK。


通用字符:


\d :匹配一个数字字符。等价于[0-9]。
\D :匹配一个非数字字符。等价于[^0-9]。
\s :匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [\f\n\r\t\v]。
\S :匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\w :匹配字母、数字、下划线。等价于'[A-Za-z0-9_]'。

\W :匹配非字母、数字、下划线。等价于 '[^A-Za-z0-9_]'。


2.元字符

[] 表示单个字符的原子表
如: [aoeiu] 表示任意一个元音字母
[0-9] 表示任意一位数字等价于 \d
[0-9][0-9] 00~99
[a-z][0-9]表示小写字和一位数字构成的两位字符
  [a-zA-Z0-9_] 表示任意一位大小字母或数字 \w


[^] 表示除中括号内原子之外的任何字符 是[]的取反
如:[^0-9] 表示任意一位非数字字符 等价于 \D
[^a-z] 表示任意一位非小写字母
        
        [0-9]{4}
{m} 表示对前面原子的数量控制,表示是m次
如:[0-9]{4} 表示4位数字0000-9999 等价于\d{4}
[1][3-8][0-9]{9} 手机号码
        [\-]?[0-9]+


{m,} 表示对前面原子的数量控制,表示是至少m次  
如: [0-9]{2,} 表示两位及以上的数字 等价于\d{2,}


{m,n}表示对前面原子的数量控制,表示是m到n次

如: [a-z]{6,8} 表示6到8位的小写字母


* 表示对前面原子的数量控制,表示是任意次,等价于{0,}
+ 表示对前面原子的数量控制,表示至少1次,等价于{1,}
? 表示对前面原子的数量控制,表示0次或1次(可有可无) 等价于{0,1}
正整数:[1-9][0-9]*

整数:  [\-]?[0-9]+

^  用在正则单元块的开头处,表示必须以指定的开头

$  用在正则单元块的结尾处,表示必须以指定的结尾

.  表示任意一个除换行符之外的字符

3.模式修饰符

所谓模式修饰符,即可以在不改变正则表达式的情况下,通过模式修正符改变正则表达式的含义,从而实现一些匹配结果的调整等功能。

修饰符 描述
re.I 使匹配对大小写不敏感
re.L 做本地化识别(locale-aware)匹配
re.M 多行匹配,影响 ^ 和 $
re.S 使 . 匹配包括换行在内的所有字符
re.U 根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
re.X 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。


关于贪婪模式匹配和懒惰模式匹配


贪婪模式:

>>> re.findall(".*","sdfgggaaa")

['sdfgggaaa']

懒惰模式:

>>> re.findall(".*?","sdfgggaaa")

['sdf', 'aaa']




你可能感兴趣的:(Python中的正则表达式基础)