量词
一般形式
1 2 3 |
[\d\d\d\d\d] //等价于 [\d]{5} |
量词还可以表示不确定的长度,用m和n来表示。它限定前面的元素能够出现的次数,m是下限,n是上限。(均为闭区间)
如果不确定长度的上限,也可以省略,只指定下限,如:
1 |
[\d]{3,} |
量词限定的出现次数,一般都具有明确的下限,如果没有,则默认为0.最好用直观的0来表示下限。
1 |
[\s]{0,10} |
量词 | 说明 |
{n} | 之前的元素必须出现n次 |
{m,n} | 最少m次,最多n次 |
{m,} | 最少m次 |
{0,n} | 可以不出现,也可以出现多次 |
常用量词
{m,n}是通用形式的量词,正则表达式还有3个常用量词,分别是+、?、*。
常用量词 | 等价形式 | 说明 |
+ | {0,} | 0到多次 |
? | {0,1} | 至多出现1次或不出现 |
* | {1,} | 最少出现1次 |
数据提取
之前有提到过,如果匹配成功,会返回一个MatchObject的对象,这个对象包含了匹配的信息,比如表达式匹配的结果。
1 2 |
print re.search(r"\d{6}","ab123456cd").group(0) 123456 |
findall(regex,string)
会返回一个数组
点号
点号是一个特殊的元字符。
点号可以匹配“任意字符”(不包括\n)。
忽略优先量词
正则表达式提供了忽略优先量词的用法:*?
1 2 3 |
[\s\S]* //忽略优先量词 [\s\S]*? |
区别在于:
使用了忽略优先量词之后,在实际的匹配过程中,遇到[\s\S]可以匹配的字符,它会先尝试“忽略”掉,如果后面的元素不能匹配,在去匹配刚刚“忽略”掉的字符。
匹配优选量词 | 忽略优先量词 | 限定次数 |
* | *? | 可以出现可以不出现,次数不设限 |
+ | +? | 至少出现一次,次数不设限 |
? | ?? | 至多出现一次,也可能不出现 |
{m,n} | {m,n}? | 最少m次,最多n次 |
{m,} | {m,}? | 最少m次,最多不设限 |
{0,n} | {0,n}? | 可能不出现,最多出现n次 |
转义
就是加上反斜杠\
量词字符 | 转义形式 |
{n} | \{n} |
{m,n} | \{m,n} |
{m,} | \{m,} |
{0,n} | \{0,n} |
* | \* |
+ | \+ |
? | \? |
*? | \*\? |
+? | \+\? |
?? | \?\? |
本文为原创文章,版权归Aet所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ Deelx正则表达式语法12/23
- ♥ 正则表达式 _ 括号01/17
- ♥ 正则表达式_匹配模式02/24
- ♥ C++并发编程 _ 基于锁的数据结构08/19
- ♥ Lua_基础 保留值&&变量09/27
- ♥ 表_约束-外键10/27