如何使用python3和re.sub()替换一个字中间的连字符?正则表达式替换字符中间的连字符
“-ICE-洁面乳 - 挂出” - > “-ICE洁面乳 - 挂出”
感谢,
巴里
编辑:我试过
self.lines = re.sub(r'\w(-)\w', " ", self.lines),但没有确定如何继续。我喜欢/ b的做法。
如何使用python3和re.sub()替换一个字中间的连字符?正则表达式替换字符中间的连字符
“-ICE-洁面乳 - 挂出” - > “-ICE洁面乳 - 挂出”
感谢,
巴里
编辑:我试过
self.lines = re.sub(r'\w(-)\w', " ", self.lines),但没有确定如何继续。我喜欢/ b的做法。
re.sub(pattern, repl, string[, count, flags])
看到docs.python.org
你的模式将是r'\b-\b'
看到这个模式here on Regexr
并与(' '
)
正则表达式的字符串前r
deifnes原始空间替换此字符串,这意味着你不需要双重转义。
\b
是一个字的边界,这意味着它会匹配一个-
当前有一个字符字符。
>>> re.sub(r'(\w)-(\w)', lambda m: '%s %s' % (m.groups()), '-ice-cream- hang-out')
'-ice cream- hang out'
没有必要匹配字词。 '\ b'断言就足够了。记住它意味着'(?:(?<= \ w)(?!\ w)|(?<!\ w)(?= \ w))'。 – tchrist
你试过了什么? – agf