单个元字符:
. //匹配任意所有单个字符,匹配几个字符就有几个点。
^ //以什么什么开头。
$ //以什么什么结尾。
* //匹配前面出现的字符0次到多次。
+ //匹配前面的字符出现1次到多次(和*号区分)。
? //匹配前面的字符出现0次或1次。(?号还有更多的作用,待补充。)
{m} //大括号表示指定前面的字符出现的次数。(m表示次数)
{m,n} //表示出现m到n次都可以(包括吗m、n次)。
[abc] //表示我们想匹配到的字符(a或b或c)。
转义符号:
\d //表示我们匹配的内容是一串数字。相当于元字符: [0-9]+
\D //表示我们匹配的内容是一串非数字。
\s //表示匹配到的是一个字符串。 如: [a-z]+
重要:
() //表示进行分组。 如(03|04)
常见组合:
^$ //表示某一行是空行。
.*? //不使用贪婪模式。这里我们*号后面加上了?表示非贪婪模式。贪婪 模式是尽可能长的去进行匹配(如*号匹配,会将所有相同的字符都匹配上。)。
如:<a>a1</a><a>a2</a>
贪婪模式会全部匹配:<a>a1</a><a>a2</a> .*
非贪婪模式会只匹配:<a>a1</a> .*?
贪婪模式与非贪婪模式实例:
root@VM-0-7-ubuntu:~/python/zeropython3/13# cat yuan.py
#
import re
a='<a>a1</a><a>a2</a>'
p1=re.compile('.*</a>') #贪婪模式
p2=re.compile('.*?</a>') #非贪婪模式
print (p1.match(a))
print (p2.match(a))
root@VM-0-7-ubuntu:~/python/zeropython3/13# python3 yuan.py
<_sre.SRE_Match object; span=(0, 18), match='<a>a1</a><a>a2</a>'>
<_sre.SRE_Match object; span=(0, 9), match='<a>a1</a>'>