正则表达式匹配多个字符(4)详解程序员

正则表达式匹配多个字符(4)


4.1 匹配多个字符

代码功能
*匹配前一个字符出现0次或者无限次,即可有可无
+匹配前一个字符出现1次或者无限次,即至少有1次
?匹配前一个字符出现1次或者0次,即要么有1次,要么没有
{m}匹配前一个字符出现m次
{m,n}匹配前一个字符出现从m到n次
{m,}匹配前一个字符出现至少m次

示例1:*
需求:匹配出一个字符串第一个字母为大小字符,后面都是小写字母并且这些小写字母可 有可无

import re 
 
ret = re.match("[A-Z][a-z]*","M") 
print(ret.group()) 
 
ret = re.match("[A-Z][a-z]*","MnnM") 
print(ret.group()) 
 
ret = re.match("[A-Z][a-z]*","Aabcdef") 
print(ret.group()) 

运行结果:

M 
Mnn 
Aabcdef 

示例2:+
需求:匹配一个字符串,第一个字符是t,最后一个字符串是o,中间至少有一个字符

import re 
 
 
match_obj = re.match("t.+o", "two") 
if match_obj: 
    print(match_obj.group()) 
else: 
    print("匹配失败") 

运行结果:

two 

示例3:?
需求:匹配出这样的数据,但是https 这个s可能有,也可能是http 这个s没有

 
import re 
 
match_obj = re.match("https?", "http") 
if match_obj: 
    print(match_obj.group()) 
else: 
    print("匹配失败") 

运行结果:

https 

示例4:{m}、{m,n}
需求:匹配出,8到20位的密码,可以是大小写英文字母、数字、下划线

import re 
 
 
ret = re.match("[a-zA-Z0-9_]{6}","12a3g45678") 
print(ret.group()) 
 
ret = re.match("[a-zA-Z0-9_]{8,20}","1ad12f23s34455ff66") 
print(ret.group()) 

运行结果:

12a3g4 
1ad12f23s34455ff66 

2. 小结

  • * 表示匹配前一个字符出现0次或者无限次,即可有可无
  • + 表示匹配前一个字符出现1次或者无限次,即至少有1次
  • ? 表示匹配前一个字符出现1次或者0次,即要么有1次,要么没有
  • {m} 表示匹配前一个字符出现m次
  • {m,n} 表示匹配前一个字符出现从m到n次
  • {m,} 表示匹配前一个字符出现至少m次

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/1325.html

(0)
上一篇 2021年7月15日
下一篇 2021年7月15日

相关推荐

发表回复

登录后才能评论