正则表达式,是一种特殊的字符序列,检查一个字符串与该序列是否相匹配。可以快速检索文本、替换文本。
python中的re模块可以用来操作正则表达式
使用:import re
findall()
作用:找出字符串中跟正则表达式匹配的所有结果,返回一个list。
使用方法:re.findall(正则表达式,要匹配的字符串)
import re
a = 'C|C++|Java|C#|Python|Javascript'
r=re.findall('Python',a)
print(r)
#执行结果
> python p\p4.py
['Python']
匹配模式
re.I:忽略大小写
>>> s='PythonC#JavaPHP'
>>> re.findall('c#',s)
[]
>>> re.findall('c#',s,re.I)
['C#']
re.S : 表示概括字符集中的“点号”将匹配所有字符包括换行符。
>>> s='PythonC#\nJavaPHP'
>>> >>> re.findall('c#.',s,re.I)
[]
>>> re.findall('c#.',s,re.I | re.S) #'c#.':匹配c#且其后面任意一个字符
['C#\n']
元字符与普通字符
'Python": 普通字符
'\d': 元字符
字符集
正则表达式的模式之一,只能匹配单一的字符。
格式:[要匹配/不匹配的字符] ([]里面是或的关系)
例如: [cf] 匹配c或者f,[^cfd]匹配除c、f、d以外的字符,[c-f]匹配c、d、e、f(c到f)
import re
s = 'abc, acc, adc, aec, afc, ahc'
# 中间字符是c或f的单词
r = re.findall('a[cf]c',s)
print(r)
#执行结果
> python p\p5.py
['acc', 'afc']
r = re.findall('a[^cfd]c',s)
print(r)
#执行结果
> python p\p5.py
['abc', 'aec', 'ahc']
要匹配的字符太多时,可以利用字符顺序省略中间字符。
用法:[c-f]
r = re.findall('a[c-f]c',s)
print(r)
#执行结果
> python p\p5.py
['acc', 'adc', 'aec', 'afc']
概括字符集
\d: 匹配0~9的数字 (等价于 '[0-9]')
import re
a = 'C0C++7Java8C#9Python6Javascript'
# 提取出a中所有的数字
r=re.findall('\d',a)
print(r)
#执行结果
> python p\p4.py
['0', '7', '8', '9', '6']
\D:匹配所有非数字,等价于'[^0-9]'