1 import re 2 match = re.match("123", "123wojiushiwo我就是我") #从字符串开头进行匹配,search方法时搜索这个字符串 3 print(match) #<_sre.SRE_Match object; span=(0, 3), match=‘123‘> 4 print(match.group()) #123 输出匹配的子串 5 #match search都只是匹配第一个子串就返回 6 """ 7 常用正则表达式 8 . 匹配除\n以外的任意一个字符,flag=re.S 也能匹配\n 9 * 匹配前一个规则0次或者多次 10 + 匹配前一个规则一次或者多次 11 ^ 匹配开头 12 $ 匹配结尾 13 ?匹配前一个规则0次或者1次 14 {m} 匹配前一规则m次 15 {m, n} 匹配前一规则m~m次之间最长子串 16 | 匹配|左边或右边的规则,两个规则或匹配 17 18 \A 只从开头匹配,相当于search方法 19 \Z 匹配一行结尾,等于$ 20 \d 匹配0-9 21 \D 匹配非数字 22 \w 匹配数字和字母大小写 23 \W 匹配除\w之外的字符 24 s 匹配空格 \t \n \r 25 \ 转义符 26 27 """ 28 #分组匹配1 29 a = re.search("(\w){3}(123|567)", "dfec567e") 30 print(a.group()) #fec567 31 print(a.groups())#(‘c‘, ‘567‘) 将多个匹配规则最后匹配的字符以元组形式输出 32 a = re.search("(\w{3})(123|567)", "dfec567e") 33 print(a.groups()) #(‘fec‘, ‘567‘) 34 #分组匹配2 35 a = re.search("(?P<province>\d{4})(?P<city>\d{4})", "12345678") 36 print(a.groupdict()) #{‘province‘: ‘1234‘, ‘city‘: ‘5678‘} 第一个匹配到的串与province组成字典的一个元素,第二个组成另一个元素,groupdict将其字典返回 37 38 #匹配所有 39 a = re.findall("\d", "123dfr45fg56") 40 print(a) #[‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘5‘, ‘6‘] 将所有匹配的结果以列表输出 41 42 #分隔字符串 43 a = re.split("\d+", "12efd34gth5") #以最长数字串将字符串切分为列表 44 print(a) #[‘‘, ‘efd‘, ‘gth‘, ‘‘] 45 46 #子串替换 47 a = re.sub("\d+", ":", "12efd34gth5") 48 print(a) #:efd:gth: 将数字串替换为:,默认替换所有 49 a = re.sub("\d+", ":", "12efd34gth5", count=1) 50 print(a) #:efd34gth5 只匹配一次 51 52 #/的处理 当处理的字符串有\时候需要在前面加上r; 53 a = re.split(r"\\", r"c:\wo\de\f") 54 print(a) #正则表达式使用r"\\"表示反斜杠,第一个\是转义符;不加r用\\\\表示反斜杠,前面两个后面两个分别在编成语言里面代表转义符和反斜杠, 55 # 转义后为两个反斜杠,在正则表达式里面第一个反斜杠是转义符第二个才是真正用到的反斜杠 56 57 #扩展匹配 58 a = re.split("a", "1ab2A1B2", flags=re.I) #忽略匹配规则的大小写 59 print(a) #[‘1‘, ‘b2‘, ‘1B2‘]
原文:https://www.cnblogs.com/flags-blog/p/12032630.html