正则表达式替换单词中间的连字符

2 投票
2 回答
4851 浏览
提问于 2025-04-17 00:22

我怎么用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 是一个单词边界,这意味着它会在前后都有字母或数字的情况下匹配 - 符号。

撰写回答