41 正则中匹配多个字符串匹配任意单个字符正则中使用字符串重复、可选和特殊字符

jyj00 2020-01-11

第三课 正则中匹配多个字符串 # 匹配多个字符串 # 择一匹配符号, | import re s = ‘Python|Ruby|Java|Swift‘ m = re.match(s,‘PythonRuby‘) print(m) # <re.Match object; span=(0, 6), match=‘Python‘> m = re.search(s, ‘I love Python.‘) print(m) # <re.Match object; span=(7, 13), match=‘Python‘> m = re.search(s, ‘I love Java.‘) print(m) # <re.Match object; span=(7, 11), match=‘Java‘> ---------------------------- 第四课 正则中匹配任意单个字符 # 匹配任意单个字符 # 点(.):可以匹配任意单个字符 ‘‘‘ match(‘.ind‘,‘-ind‘) ‘\.ind‘ ‘bind‘ ‘‘‘ import re s = ‘bin.‘ m = re.match(s, ‘binxa‘) if m is not None: print(m.group()) # binx m = re.search(s, ‘<bind>‘) print(m.group()) # bind s1 = ‘3.14‘ s2 = ‘3\.14‘ # 这个只能匹配 3.14 m = re.match(s1, ‘3.14‘) print(m) # <re.Match object; span=(0, 4), match=‘3.14‘> m = re.match(s1, ‘3314‘) print(m) # <re.Match object; span=(0, 4), match=‘3314‘> m = re.match(s2, ‘3.14‘) print(m) # <re.Match object; span=(0, 4), match=‘3.14‘> m = re.match(s2, ‘3514‘) print(m) # None
第五课  正则中使用字符串
主要针对单个字符有多个选择

#  [abcd]   表示   或者是a  或者是b 或者是c 或者是d

# 使用字符集
# [abcd]  abc|b|c|d
import re
m = re.match(‘[abcd]‘,‘a‘)
print(m)                # <re.Match object; span=(0, 1), match=‘a‘>

print(re.match(‘a|b|c|d‘,‘a‘))  # <re.Match object; span=(0, 1), match=‘a‘>

print(re.match(‘[abcd]‘,‘ab‘))  # <re.Match object; span=(0, 1), match=‘a‘>
print(re.match(‘ab|cd‘,‘ab‘))  # <re.Match object; span=(0, 2), match=‘ab‘>

print(re.match(‘[ab][cd][ef][gh]‘,‘adfh‘)) # <re.Match object; span=(0, 4), match=‘adfh‘>

print(re.match(‘[ab][cd][ef][gh]‘,‘abceh‘))  # None

-------------------------
第六课  正则中重复、可选和特殊字符

# 重复、可选和特殊字符

‘‘‘
*:0到n  a* 空字符串 a aa  aaa     表示*修复的字符串 0到n次
+:1到n  a+  a  aa   aaa         表示+修复的字符串 1到n次 至少有一个
?:可选  a?  空字符串  a           表示修复的字符串可有可无 
‘‘‘
‘‘‘
匹配‘a‘ ‘b‘ ‘c‘三个字母按顺序从左到右排列,而且这3个字母都必须至少有1个
abc  aabc   abbbccc   bca(不匹配) 
‘‘‘
import re
s = ‘a+b+c+‘     # 同时满足 三个字母按顺序并且至少有1个 
strList = [‘abc‘,‘aabc‘,‘bbabc‘,‘aabbbcccxyz‘]
for value in strList:
    m = re.match(s,value)
    if m is not None:
        print(m.group())
    else:
        print(‘{}不匹配{}‘.format(value,s))
结果为:
abc
aabc
bbabc不匹配a+b+c+
aabbbccc

# 匹配前面任意3个数字-后面任意3个小写字母
‘‘‘
123-abc   543-xyz   1-xyz(不匹配)  xyz-123(不匹配)
[0-9]  表示任意一个数字 
\d    表示任意一个数字 
\d\d\d     任意3个数字 
[a-z]   任意一个小写字母 
[a-z][a-z][a-z]   任意3个字母
[A-Z]        任意一个大写字母 
{n}         
\d{3}       表示任意出现3此数字 
[a-z]{3}    表示一个出现3此字母
‘‘‘
print(‘-------------‘)
s = ‘\d{3}-[a-z]{3}‘
strList = [‘123-abc‘,‘456-xyz‘,‘1234-xyz‘,‘1-xyzabc‘,‘657-xyz^%abc‘]
for value in strList:
    m = re.match(s,value)
    if m is not None:
        print(m.group())
    else:
        print(‘{}不匹配{}‘.format(value,s)) 

结果为:
123-abc
456-xyz
1234-xyz不匹配\d{3}-[a-z]{3}
1-xyzabc不匹配\d{3}-[a-z]{3}
657-xyz

‘‘‘
匹配以a到z的26个字母中的任意一个作为前缀(也可以没有这个前缀),后面至少有1个数字

‘‘‘
print(‘-------‘)
s = ‘[a-z]?\d+‘
strList = [‘1234‘,‘a123‘,‘ab456‘,‘b234abc‘]
for value in strList:
    m = re.match(s,value)
    if m is not None:
        print(m.group())
    else:
        print(‘{}不匹配{}‘.format(value,s)) 

结果为:
1234
a123
ab456不匹配[a-z]?\d+
b234

‘‘‘
匹配email
\w   表示任意一个字符,包括小写的大写的字母和数字 也能匹配汉子 不包括连字符和特殊的字符
\w+   表示任意一个字符,包括小写的大写的字母和数字  至少有一个 不能为空
[a-zA-Z0-9] 表示:只能是字母小写大写和数字
‘‘‘
print(‘-------‘)
email = ‘\(\w+\.)*\w+\.com‘
emailList = [‘‘,‘‘,‘‘,‘‘]
for value in emailList:
    m = re.match(email,value)
    if m is not None:
        print(m.group())
    else:
        print(‘{}不匹配{}‘.format(value,email))

结果为:


不匹配\(\w+\.)*\w+\.com


strValue = ‘我的email是,请发邮件到这个email‘
m = re.search(email,strValue)
print(m)  # <re.Match object; span=(0, 26), match=‘我的email是‘> 
email = ‘[a-zA-Z0-9](\w+\.)*\w+\.com‘
m = re.search(email,strValue)
print(m)  # <re.Match object; span=(8, 26), match=‘‘>
print(m.group())  #

相关推荐

jyj00 / 0评论 2020-01-29