大写取反\D表示不要数字
import re
a = 'python123python666python888'
print(re.findall('python',a)) #返回值是一个列表
print(re.findall('123',a))
print(re.findall('999',a)) #如果匹配值不存在返回一个孔列表
a = 'python123python666python888'
>>> import re
>>> re.match('python',a)
<_sre.SRE_Match object; span=(0, 6), match='python'>
>>> re.match('python123',a)
<_sre.SRE_Match object; span=(0, 9), match='python123'>
>>> bb = re.match('python',a)
>>> bb.group() #group查看匹配到的字符
'python'
>>> bb.span() #span()查看匹配字符下标取值区间
(0, 6)
>>> print(re.match('python',a))
<_sre.SRE_Match object; span=(0, 6), match='python'>
>>> print(bb)
<_sre.SRE_Match object; span=(0, 6), match='python'>
>>>
re.match与re.search的区别:
re.match只匹配字符串的开始位置找,如果字符串开始不符合正则表达式,则匹配失败,
re.search:匹配整个字符串,如果一直找不到则,返回是空的,没有结果
元字符:
. 匹配任意一个字符(除了\n)
[] 匹配[]中列举的字符
\d 匹配数字,即0-9
\D 匹配非数字,即不是数字
\s 匹配空白,即空格,tab键
\S 匹配非空白
\w 匹配单词字符,即a-z,A-Z,0-9,_
\W 匹配非单词字符
代表数量的元字符:
[*] 星号匹配前一个字符出现0次或者无限次,可有可无
+ 加号匹配前一个字符出现1次或者无限次,即至少有一次
? 问号匹配前一个字符出现1次或者0次,即要么有一次,要么没有。
{m} 大括号加m,匹配前一个字符出现m次
{m,} 大括号加m,匹配前一个字符至少出现m次
{m,n} 大括号加m,n,匹配前一个字符出现从m到n次。包括m和n次
表示边界的元字符:
^ 匹配字符开头
$ 匹配字符结尾
\b 匹配一个单词的边界
\B 匹配非单词边界
分组匹配
| 匹配左右任意一个表达式
(ab) 将括号中字符作为一个分组