目录
正则表达式
什么是正则表达式
正则表达式的通俗理解:按照一定的规则,从字符串中匹配出想要的部分,这个规则就是正则表达式。
正则表达式语法(单个字符)
1.匹配某个字符串
import re
#1.匹配某个字符串
text="hello"
ret=re.match('he', text)
print(ret.group())
2.点,匹配任意字符,但不能匹配换行符'\n'
#2.点,匹配任意字符,但不能匹配换行符'\n'
text="hello"
ret=re.match('.', text)
print(ret.group())
3.\d,匹配0-9数字
4.\D,匹配非数字
5.\s,匹配空白字符(\n,\t,\r,空格)
6.\w,匹配a-z,A-Z,数字,下划线
7.\W,与\w匹配的相反
8..[],组合的方式,可以匹配到中括号中的任意字符
电话号码的匹配
中括号代替
text="2589-894512"
ret=re.match('[0-9]+', text)#[0-9]代替\d
print(ret.group())
text="-894512"
ret=re.match('[^0-9]+', text)#[^0-9]代替\D
print(ret.group())
text="25a89-894512"
ret=re.match('[0-9a-zA-Z_]+', text)#[0-9a-zA-Z_]代替\w
print(ret.group())
text="-+894512"
ret=re.match('[^0-9a-zA-Z_]+', text)#[^0-9a-zA-Z_]代替\W
print(ret.group())
正则表达式语法(多个字符)
9.*:可以匹配0-任意多的字符
text="25a89-894512"
ret=re.match('\d*', text)
print(ret.group())
10.+:可以匹配1-任意多的字符
#+:可以匹配1-任意多的字符
text="25a89-894512"
ret=re.match('\w+', text)
print(ret.group())
11.?:可以匹配0或1个
#?:可以匹配0或1个
text="25a89-894512"
ret=re.match('\w?', text)
print(ret.group())
12.{m}:可以匹配m个
#{m}:可以匹配m个
text="25a89-894512"
ret=re.match('\w{3}', text)
print(ret.group())
13.{m,n}:可以匹配m到n个,以最多字符串进行匹配
#{m,n}:可以匹配m到n个,以最多字符串进行匹配
text="25a89-894512"
ret=re.match('\w{3,4}', text)
print(ret.group())
正则表达式其他语法
14."^"脱帽号,
但是match本身就是从第一个字符进行匹配,所以用search进行演示
text="ahrrt"
ret=re.search('^a',text)
print(ret.group())
15."$"以什么结尾
以@163.com结尾
text="[email protected]"
ret=re.search('\[email protected]',text)
print(ret.group())
16."|",选择
text="https://baike.baidu.com/item/Python/407313?fr=aladdin"
ret=re.match('http|https|ftp',text)
print(ret.group())
17.贪婪与非贪婪
贪婪指的是尽可能多的匹配,“+”表示,非贪婪是找到就结束匹配“?”表示
text="<h1>标题</h1>"
ret=re.match('<.+>',text)
print(ret.group())
text="<h1>标题</h1>"
ret=re.match('<.+?>',text)
print(ret.group())
匹配1-100数字
可以匹配:类似1,5,55,99,100
不可以:09,101,1000
text="100"
ret=re.match('[1-9]\d?$|100$',text)
print(ret.group())