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 匹配的数字
\b 匹配单词的开始或者结束,但是通常是分界符是空格,标点符号或者换行
^ 匹配字符的开始
$ 匹配字符的结束
   
限定符 说明 举例
匹配前面字符的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

  

猜你喜欢

转载自www.cnblogs.com/c-jw/p/12662391.html