多个字符的匹配以及一些简单的小案例匹配练习

多个字符的匹配:

1)*:可以匹配0个或者任意多个字符

text = '09asd+-sad/+'
ret = re.match('\d*',text)
print(ret.group())

  

匹配出来的结果为 09,其中可以匹配0个的意思是:当匹配的字符串中没有匹配内容,不会抛出错误,会显示空。

 

2)+:匹配一个或者多个字符

text = 'a25sdzcs'
ret = re.match('\w+',text)
print(ret.group())

 当匹配不出,即匹配出0个时会报错。

 

3)?:匹配到一个或者0个(要么没有要么只有一个)

text = 'abcd'
ret = re.match('\w?',text)
print(ret.group())

 

4){m}:匹配m个字符

text = 'a25sdzcs'
ret = re.match('\w{2}',text)
print(ret.group())

 

5){m,n}:匹配m到n个字符(如果字符够,则匹配到最多n个)

text = 'abcda2'
ret = re.match('\w{2,5}',text)
print(ret.group())

  

6)^脱字号:表示以...开始(放在[ ]中表示取非)

text = "182581530x558 "
ret = re.search("^x",text)
print(ret.group())

其中.search()方法区别.match()方法是:match()是从第一个字符开始匹配,若匹配不到直接抛出错误;而search()则不会,只要字符串中有所匹配内容,就可以匹配。

本例子,因为用了^脱字号,所以无法匹配出以x开头的字符,导致匹配不出。

 

7)$:表示以...结尾:

text = "xxxxx@163.com"
ret = re.match("\w+@163.com$",text)
print(ret.group())

与 + 混合使用。

 

8)|:表示匹配多个字符或者表达式,即 或 的意思。(多个需要用圆括号括起来)

text = "https://www.baidu.com"
ret = re.match("(http|https|ftp)://.+",text)
print(ret.group())

 

9)贪婪模式与非贪婪模式:(贪婪模式:尽量多得匹配;反之。)

text = "<h1>标题</h1>"
ret = re.match("<.+?>",text) #  .+  匹配到的是   h1>标题</h1;加上?后变为非贪婪模式。
print(ret.group())

 

小案例练习:

1)粗略匹配第二代身份证号(18位):

text = "25654119940109123x"
ret = re.match("\d{17}[\dxX]",text)
print(ret.group())

 

2)粗略验证url:

text = "http://www.weather.com.cn/textFC/gat.shtml"
ret = re.match("(http|https|ftp)://.+",text)
print(ret.group())

 

3)粗略验证手机号码:

text = "13410811054"
ret = re.match("1[3578]\d{9}",text)
print(ret.group())

 

4)粗略验证邮箱:

text = "qqwez123_@qq.com"
ret = re.match("\w+@[a-z0-9]+\.(com|cn)$",text)
print(ret.group())

 

posted @ 2019-07-15 15:30  hey朱迪  阅读(547)  评论(0编辑  收藏  举报