python 正则

\s  :空白符;
\S  :非空白符;
[\s\S]  :任意字符;
[\s\S]*  :0个到多个任意字符;
[\s\S]*?   : 0个字符,匹配任何字符前的位置;

\d:数字;

\B:非数字 ;

\w:匹配单词 单词等价于:[a-zA-Z0-9_]; 

\W:匹配非单词;

 

规则:

.  匹配任意单个字符;

*  匹配前一个字符0次或多次;

+  匹配前一个字符1次或多次;

?  匹配前一个字符0次或一次;

{m}    匹配前一个字符m次;

{m,n} 匹配前一个字符 m - n 次;

{m,}   匹配前一外字符至少 m次 至多无限次;

{,n}  匹配前一个字符 0 到 n次;

\  转义字符;

[...]  字符集 例:[a-z];   

.*? *? +? ??  {}?    使* + 等 变成非贪婪模式

 

边界匹配(不消耗待匹配的待匹配字符串的字符)

^:匹配字符串开头,在多行模式中匹配每一行的行首;

$:匹配字符串结尾,在多行模式中匹配每一行的行尾;

\b:匹配单词边界,不匹配任何字符,\b匹配的只是一个位置,这个位置的一侧是构成单词的字符,另一侧为非字符、字符串的开始或结束位置,\b是零宽度的。(“单词”是由\w所定义的单词子串) \b相当于:(?<!\w)(?=\w)|(?<=\w)(?!\w);

\B:[^\b];

\A:仅匹配字符串开头;

\Z:仅匹配字符串结尾;

 

分组:

|  或,左右表达式任意匹配一个,它先尝试匹配 | 左边的表达式,如果匹配成功则跳过匹配右边的表达式;如果 | 没有被包括在()中,则它在范围是整个正则表达式。

()  分组 ;从表达式左边开始,第遇到一个分组,编号加1;分组表达式作为一个整体,后面可接数量词;分组表达式中的 | 仅在该分组中有效。   例:(abc){3}  (abc|def)123  (abc|def){3}123

\number  引用编号为 number 的分组匹配到的字符串。 例:(\d)([a-z])\1\2

 

环视(lookhead)

(?=) :顺序肯定环视  

(?!) :顺序否定环视  

(?<=) :逆序 肯定环视 

(?<!) :逆序否定环视  

 

posted @ 2016-07-01 14:05  Echo/  阅读(240)  评论(0编辑  收藏  举报