代码之家  ›  专栏  ›  技术社区  ›  kitchenprinzessin

Python正则表达式-替换基于字符串的重复模式

  •  0
  • kitchenprinzessin  · 技术社区  · 6 年前

    L^2 M T^-1 L^2.M.T^-1 . 只有在两个单词字符之间,点才替换空格(\s)。例如,如果字符串为“lbf/s”,则不会应用替换。

    str1= 'L^2 M T^-1'
    
    pattern = re.compile(r'(\w+\s\w+)+')
    def pattern_match2(m):
        me = m.group(0).replace(' ', '.')
        return me
    
    pattern.sub(pattern_match2, str1) # this produces L2.MT-1
    

    1 回复  |  直到 6 年前
        1
  •  4
  •   DeepSpace    6 年前

    re.sub 直接而不是找到匹配然后使用 str.replace \b \w 自从 \w型 [a-zA-Z0-9_] ,而 以更聪明的方式封装它(本质上它相当于 (^\w|\w$|\W\w|\w\W) )

    import re
    
    print(re.sub(r'\b(\s)\b', '.', 'L^2 M T^-1'))
    # L^2.M.T^-1
    
    print(re.sub(r'\b(\s)\b', '.', 'lbf / s'))
    # lbf / s