正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的特定字符组成一个规则字符串,这个规则字符串用来表达对目标字符串的一种过滤逻辑。
注意
正则表达式字符串需要经过两次转义,这两次转义分别是“字符串转义”和正则转义。
模式 | 描述 | 模式 | 描述 |
---|---|---|---|
. | 匹配任意字符,除换行符 | \s | 匹配空白字符 |
* | 匹配前一个字符0次或多次 | \S | 匹配任何非空白字符 |
+ | 匹配前一个字符1次或多次 | \d | 匹配数字,等价与[0-9] |
? | 匹配前一个字符0次或1次 | \D | 匹配任何非数字,等价于[^0-9] |
^ | 从字符串开头匹配 | \w | 匹配任何字母数字,等价于[A-Za-z0-9] |
$ | 到字符串末尾结束 | \W | 匹配非字母数字,等价与[^A-Za-z0-9] |
() | 匹配括号内的表达式,也表示一个组 | [] | 用来表示以组字符 |
从字符串起始位置匹配一个你定义好的模型,如果起始位置没有,则返回None
re.match(pattern,string,flags=0)
参数解释:
import re
m = re.match('love','i love python')
#返回的是none
因为在字符串’i love python’的起始位置没有’love’,也可以说因为字符串起始字符是i,而不是l,所以从一开始就是匹配不到。如果就是想用怎么办?
使用正则字符——’.’
m = re.match('.love','i love python')
扫描整个字符串,并且返回第一个成功匹配
import re
m_match = re.match('com','www.nihao.com')
m_search = re.search('com','www.nihao.com')
print(m_match) --->none
print(m_search) ---><_sre.SRE_Match object; span=(10, 13), match='com'>
扫描整个字符串,找到所有匹配项,并且以列表的形式返回
import re
m_findall = re.findall('[0-9]+','12345 is the first number,24680 is the second number')
print(m_findall) ---> ['12345','24680']
http://regex101.com/
几个正则方法:
start():返回匹配字符串的起始索引
end():返回匹配字符串的结束索引
group()<==>group(0):返回匹配的所有结果
group(1):列出第一个匹配项
正则表达式的学习还是需要通过不断的练习,应该找几个刷题的网站不断实战,否则学了就忘。