正则表达式替换单词中间的连字符
我怎么用Python3和re.sub()把单词中间的连字符替换掉呢?
"-ice-cream- - hang-out" 变成 "-ice cream- - hang out"
谢谢,
巴里
编辑:我试过了
self.lines = re.sub(r'\w(-)\w', " ", self.lines),但不太确定接下来该怎么做。我喜欢用/b的方式。
2 个回答
1
在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这些问题可能是因为我们没有正确理解某些概念,或者在写代码时犯了一些小错误。
例如,假设你在写一个程序,想让它做一些特定的事情,但它却没有按照你的想法运行。这时候,你需要仔细检查你的代码,看看是不是哪里写错了,或者有没有漏掉什么重要的部分。
另外,学习编程的时候,遇到问题是很正常的。很多时候,其他人也遇到过类似的问题,所以在网上查找解决方案,比如在StackOverflow上提问,可能会找到有用的答案和建议。
总之,编程就像解谜一样,有时候需要耐心和细心,慢慢找出问题所在,才能让你的程序顺利运行。
>>> re.sub(r'(\w)-(\w)', lambda m: '%s %s' % (m.groups()), '-ice-cream- hang-out')
'-ice cream- hang out'
5
re.sub(pattern, repl, string[, count, flags])
具体用法可以查看 docs.python.org
你的匹配模式是 r'\b-\b'
你可以在这个链接 这里查看这个模式
然后把它替换成一个空格 (' '
)
在正则表达式字符串前面的 r
表示这是一个原始字符串,这样你就不需要使用双重转义了。
\b
是一个单词边界,这意味着它会在前后都有字母或数字的情况下匹配 -
符号。