python 正则

s  :空白符;
S  :非空白符;
[sS]  :任意字符;
[sS]*  :0个到多个任意字符;
[sS]*?   : 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];   

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

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

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

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

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

B:[^];

A:仅匹配字符串开头;

:仅匹配字符串结尾;

分组:

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

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

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

环视(lookhead)

(?=) :顺序肯定环视  

(?!) :顺序否定环视  

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

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

原文地址:https://www.cnblogs.com/yangxiaolan/p/5632849.html