正则表达式指预先定义好一个“字符串模板”,通过这个“字符串模板”可以匹配、查找和替换那些匹配“字符串模板”的字符串。
1、字符串匹配
re.match()必须从字符串开头匹配!
match方法尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
re.match(pattern, string)
# pattern 匹配的正则表达式
# string 要匹配的字符串
1.1、单字符匹配
. 匹配任意1个字符(除了\n)
[ ] 匹配[ ]中列举的字符
\d 匹配数字,即0-9
\D 匹配非数字,即不是数字
\s 匹配空白,即 空格,tab键
\S 匹配非空白
\w 匹配单词字符,即a-z、A-Z、0-9、_
\W 匹配非单词字符
import re
a = re.match('..','testasdtest')
print(a.group()) #输出te
b = re.match('ab.','testasdtest')
print(b) #返回none,因为表达式是以固定的ab开头然后跟上通配符. 所以必须要先匹配上ab才会往后进行匹配
1.2、多字符匹配
* 匹配前一个字符出现0次或者无限次,即可有可无
+ 匹配前一个字符出现1次或者无限次,即至少有1次
? 匹配前一个字符出现1次或者0次,即要么有1次,要么没有
{m} 匹配前一个字符出现m次
{m,n} 匹配前一个字符出现从m到n次
import re
a = re.match('..','testasdtest')
print(a.group()) #输出te
a = re.match('.*','testasdtest')
print(a.group()) #全部输出
2、字符串查找
常用的字符串查找函数如下。
search(p,text):在text字符串中查找匹配的内容,如果找到,则
返回第1个匹配的Match对象,否则返回None。p是正则表达式。
findall(p,text):在text字符串中查找所有匹配的内容,如果找到
,则返回所有匹配的字符串列表;如果一个都没有匹配,则返回None。
p是正则表达式。
import re
p = r'java|Java|JAVA'
test = 'I like Java and java and JAVA.'
math_list = re.findall(p,test)
print(math_list)
3、字符串替换
import re
P = r'\d+'
test = 'AB12CD34EF'
repace_test = re.sub(P,' ',test)
print(repace_test)
4、字符串分割