py_正则表达式练习

正则表达式:

#正则表达式
#键盘数字6上的符号,^表示行的开始,$ 表示行的结束

#test = "tm queal Tomorrow Moon"
'''
^tm #匹配tm开头的文字
$tm #匹配
'''
# 元字符
# /b /w
'''
#字符类
    [0-9] 等价于 d[a-z0-9A-Z]等价于w(只考虑英文)
#排除字符
    ^ 如在括号里面,表示排除这些字符 eg:[^a-zA-Z]
#选择字符
    |表示选择,
        (^d{15}$)|(^d(18)$)|(^d{17}(d|X|x))$  #匹配第一代身份证,第二代身份证
        解释:^表示开始,为15个数字,并且以数字结尾,
            或者以数字开头,18位的数字,并且以数字结尾,
            或以数字开头,17位的数字,并且以X或x结尾
#转义字符:
    例:需要匹配 127.0.0.1    [1-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}
    
'''
 
代码元字符说明
.匹配换行符以外的任意字符
w匹配字母,数字,下划线或汉字
W匹配字母,数字,下划线或汉字以外的字符
s匹配单个空白符(包括Tab和换行符)
S匹配单个空白符(包括Tab和换行符)以外的字符
d匹配的数字
匹配单词的开始或者结束,但是通常是分界符是空格,标点符号或者换行
^匹配字符的开始
$匹配字符的结束
  
限定符说明举例
匹配前面字符的0次或者1次colou?r ,可匹配到color和colour
+匹配前面字符的一次或者多次go+gle,可以匹配到:gogle,goo…ogle
*匹配前面的字符的零次或者多次go*gle,可以匹配到:ggle,goo…ogle
{n}匹配前面字符的n次go{2},可以匹配到:google
{n,}匹配前面字符最少n次go{2,}gle,可以匹配到:google,goo...ogle
{n,m}匹配前面字符最少n次,最多m次google{1,3} 可以匹配到:google,googleee
import re   #导入正则表达式模块  
 
 
# 在py中match()
# re.match(pattern,string,[flags])

#  w 匹配字母数字下划线或者数字 +匹配前面字符的一次或者多次
# r 代表原始字符,防止出现转义  
pattern = r'mr_w+' 
string = "MR_CODE mr_code"
match = re.match(pattern,string,re.I) # i表示不区分大小写
print(match)
#ps <re.Match object; span=(0, 7), match='MR_CODE'>   
#  因为不匹配空格,故未匹配到 mr_code
#  将空格去掉后,MR_CODEmr_code 则可匹配到 MR_CODEmr_code

pattern2 = r'mr_w+' 
string2 = "sssMR_CODE mr_code"
match2 = re.match(pattern2,string2,re.I) # i表示不区分大小写
print(match2)
# 若未匹配到,返回None


# 在py中search()
pattern3 = r'mr_w+' 
string3 = "sssMR_CODE mr_code"
search = re.search(pattern3,string3,re.I) # i表示不区分大小写
print(search)
# <re.Match object; span=(3, 10), match='MR_CODE'>

pattern4 = r'mr_w+' 
string4 = "ssssssMR_CODE mr_code"
search2 = re.search(pattern4,string4,re.I) # i表示不区分大小写
print(search2)
# <re.Match object; span=(6, 13), match='MR_CODE'>


# 在py中findall()
pattern5 = r'mr_w+' 
string5 = "ssssssMR_CODE mr_code"
search5 = re.findall(pattern5,string5,re.I) # i表示不区分大小写
print(search5)
print("findall()")

# 在py中sub() 替换
pattern6 = r'1[34578]d{9}'
string6 = "中奖号码为:89332,联系电话:13611111111"
search6 = re.sub(pattern6,'1我爱学py',string6) # i表示不区分大小写
print("sub()")
print(search6)
# 中奖号码为:89332,联系电话:1我爱学py
原文地址:https://www.cnblogs.com/c-jw/p/13806705.html