How to replace dash between characters with space using regex

后端 未结 4 1106
猫巷女王i
猫巷女王i 2021-01-18 11:56

I want to replace dashes which appear between letters with a space using regex. For example to replace ab-cd with ab cd

The following matc

4条回答
  •  礼貌的吻别
    2021-01-18 12:40

    You need to capture the characters before and after the - to a group and use them for replacement, i.e.:

    import re
    subject = "ab-cd"
    subject = re.sub(r"([a-z])\-([a-z])", r"\1 \2", subject , 0, re.IGNORECASE)
    print subject
    #ab cd
    

    DEMO

    http://ideone.com/LAYQWT


    REGEX EXPLANATION

    ([A-z])\-([A-z])
    
    Match the regex below and capture its match into backreference number 1 «([A-z])»
       Match a single character in the range between “A” and “z” «[A-z]»
    Match the character “-” literally «\-»
    Match the regex below and capture its match into backreference number 2 «([A-z])»
       Match a single character in the range between “A” and “z” «[A-z]»
    
    \1 \2
    
    Insert the text that was last matched by capturing group number 1 «\1»
    Insert the character “ ” literally « »
    Insert the text that was last matched by capturing group number 2 «\2»
    

提交回复
热议问题