正则要点一:

Python中正则表达式中r的定义:
    特殊字符  -->  普通字符   例: \n  转换成普通字符
      编程语言:  \n ---->  \\n
       正则匹配: \n ---->   \\n
对于Python中的正则匹配的转义需要经过两层
     特殊字符 --> 编程语言 --> 正则匹配 --> 普通字符
添加了r后的: re.findall(r'\\n','\\n')
    特殊字符 --> 正则匹配 --> 普通字符

r的含义是Python的内置替代编程语言的转义

 

 

正则中在查找的字段前或后添加新内容:

方法一

 

str = '123.jpg, 456.jpg, 789.jpg'
b = re.sub('(?P<data>\d+\.jpg)',r'sdf\\\g<data>', str)
print(b)

结果:sdf\123.jpg, sdf\456.jpg, sdf\789.jpg

 

方法二

def double(matched):
    value = matched.group('value')
    return str( 'sdd/' + value)
s = '567'
print(re.sub('(?P<value>\d+)', double, s))  #1.在第二参数中,可以添加字符串或函数 2.?P<value>的意思就是命名一个名字为value的组,匹配规则符合后面的/d+

结果:sdd/567

 

在匹配 \n \r在内的其他字符:

import re

#在res字符串中,除了有 \n ,还有空格,tab键
res = '''
    dd
    fd
    e
    '''
result1 = re.findall('dd*e',res)    
result2 = re.findall('dd[\s\S]*e',res)
print(result1)
print(result2)

结果:

    []
    ['dd\n fd\n e']

对应学习参考:https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1700215?fr=aladdin

    

 

匹配重复单词:

import re
s2 = 'appleapple56tototowidth'
p = re.compile(r'(\w+)\1+')    #\1表示使用编号为1的分组    
#p = re.compile(r'(\w+)\1{1,}') 匹配重复单词的次数 {1,}代表2次以上(包括2) 在此{}中特殊性 print(p.findall(s2))

结果:['apple', 'to']

 

posted on 2018-09-19 15:15  是你啊  阅读(220)  评论(0编辑  收藏  举报