在replace()中使用正则表达式拼接文本中被拆分的跨行单词
问题原因
你最初使用的text.replace(/[\n-]/g, "")不符合预期,是因为[]是正则字符集语法,会全局匹配所有-和所有换行符,不会区分-是否处于单词截断的行尾位置,会误删文本中其他正常使用的-和不需要合并的普通换行。
正确实现方案
你需要精准匹配「行尾连字符+可选空白+换行」的特征,JavaScript 代码如下:
const mergedText = text.replace(/-[ \t]*\n/g, '')
如果是其他编程语言,正则匹配逻辑完全一致,仅调用替换方法的语法略有不同,比如Python写法为:
import re merged_text = re.sub(r'-[ \t]*\n', '', text)
正则说明
-:匹配单词截断用的连字符[ \t]*:匹配连字符后、换行前0个或多个空格、制表符,兼容你提到的换行前带空白的场景\n:匹配提前统一处理后的换行符g:全局匹配所有符合特征的片段
效果验证
对测试文本执行替换后可得到预期结果:
| 原文本片段 | 替换后结果 |
|---|---|
interest-\ning | interesting |
interest- \ning | interesting |
完整示例today is an interest-\ning day | today is an interesting day |
内容的提问来源于stack exchange,提问作者user8962168
相关产品推荐
相关产品推荐

