Python入门篇之正则表达式

2019-10-05 15:57:35王冬梅

有一组特殊的字符序列,用来匹配具体的字符类型或字符环境。如b匹配字符边界,foodb匹配"food"、"zoofood",而和"foodies"不匹配。
 
特殊字符序列

字符 描述
A 只匹配字符串的开始
b 匹配一个单词边界
B 匹配一个单词的非边界
d 匹配任意十进制数字字符,等价于r'[0-9]'
D 匹配任意非十进制数字字符,等价于r'[^0-9]'
s 匹配任意空格字符(空格符、tab制表符、换行符、回车、换页符、垂直线符号)
S 匹配任意非空格字符
w 匹配任意字母数字字符
W 匹配任意非字母数字字符
Z 仅匹配字符串的尾部
匹配反斜线字符

有一套声明(assertion)对具体事件进行声明。
 
正则表达式声明

声明 描述
( iLmsux) 匹配空字符串,iLmsux字符对应下表的正则表达式修饰符。
( :...) 匹配圆括号内定义的表达式,但不填充字符组表。
( P<name>) 匹配圆括号内定义的表达式,但匹配的表达式还可用作name标识的符号组。
( P=name) 匹配所有与前面命名的字符组相匹配的文本。
( #...) 引入注释,忽略圆括号内的内容。
( =...) 如果所提供的文本与下一个正则表达式元素匹配,这之间没有多余的文本就匹配。这允许在一个表达式中进行超前操作,而不影响正则表达式其余部分的分析。如"Martin"其后紧跟"Brown",则"Martin( =Brown)"就只与"Martin"匹配。
( !...) 仅当指定表达式与下一个正则表达式元素不匹配时匹配,是( =...)的反操作。
( <=...) 如果字符串当前位置的前缀字符串是给定文本,就匹配,整个表达式就在当前位置终止。如( <=abc)def表达式与"abcdef"匹配。这种匹配是对前缀字符数量的精确匹配。
( <!...) 如果字符串当前位置的前缀字符串不是给定的正文,就匹配,是( <=...)的反操作。