GoodLuck
2023-01-14
来自江苏
re.sub("(Y|y)(es)*", "No", "aayesbb") 'aaNobb' # 执行结果 中的那个*是不是应该改成?
作者回复: 改成 ? 更贴切,我使用* 匹配了es多次,只使用了第一次
谢韬 Fragos
2022-03-15
根据尹老师的课程我总结了16个常用的正则表达式的元字符及组合的用法列子,供大家参考。 # 元字符* 表示从0到多个 p1=re.compile('ca*t') print(p1.match('ct')) print(p1.match('cat')) print(p1.match('caaat')) # 元字符+ 表示从1到多个 p2=re.compile('ca+t') print(p2.match('ct')) print(p2.match('cat')) print(p2.match('caaat')) # 元字符点. 用于匹配任意单个字符 p3= re.compile('...') print(p3.match('abc')) # 元字符^表示以什么字符开头 p4 = re.compile('^~') print(p4.match('~abcd')) # 元字符$ 表示以什么结尾,从后往前匹配 phone = '123-456-789 #这是电话号码' p5 = re.sub('#.*$','',phone) print(p5) # 元字符?表示前面到字符出现0次或1次 p6 = re.compile('ca?t') print(p6.match('ct')) print (p6.match('cat')) print (p6.match('caat')) # 元字符{} 大括号里面的数字表示前面字符出现多少次 p7 = re.compile('ca{3}t') print(p7.match('caaat')) #{m,n} 打括号表示前面字符出现m 到 n次(包括m和n)之间的次数 p8 = re.compile('ca{2,5}t') print(p8.match('caaaaat')) # 元字符[] 中括号表示括号里任意字符匹配成功就算匹配成功。 p9 = re.compile('c[a-d]t') print(p9.match('cat')) print(p9.match('cbt')) print(p9.match('cct')) print(p9.match('cdt')) # | 竖线表示的是字符选择左边还是右边。通常和括号用在一起 p10 = re.sub("(Y|y)(es)*","No","aayesbbcc") print(p10) # \d 斜杠d表示匹配的内容为一串数字 相当于[0-9]出现了多次([0-9]+) p11 = re.compile(r'\d+-\d+-\d+') print(p11.match('2022-3-15')) # \D斜杠D匹配不包含数字的字符 phone = '123-456-789 #这是电话号码' p12 = re.sub(r'\D','',phone) print(p12) # \s 匹配的是字符串 #元字符()小括号的作用是进行分组。作用强大。 p14 = re.compile(r'(\d+)-(\d+)-(\d+)') print(p14.match('2022-3-15').group(1)) print(p14.match('2022-3-15').groups()) year, month, day= p14.match('2022-3-15').groups() print(year) # 元字符^$ 表示这样一行为空行。 # 元字符.*? 表示不使用贪婪模式,只匹配第一个匹配上的内容。编写网页匹配很常用。 # 字符r(表示字符串是raw string)可以让转义符失效,原样输出 print (r'\n x \n')
展开
3
Bill
2021-10-19
[0-9]{18}
1
ifelse
2023-07-07
来自浙江
学习打卡
坚果
2022-02-28
p = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/