You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

匹配仅开头或仅结尾带hyphen单词的Regex不生效,如何修正?

问题原因

  • 原正则使用(\s+|^)、(\s+|$)作为边界匹配,匹配命中时会同时吃掉单词前后的空格,导致相邻的符合规则的单词因为缺少分隔空格无法被匹配
  • 直接替换为空会导致正常单词之间残留多余空白
  • 代码未导入re模块,运行时会直接报错

修正方案

改用零宽断言匹配边界,不会占用空白字符,匹配完成后再统一清理多余空白即可,完整实现代码如下:

import re

def begin_end_hyphen_removal(line):
    # 匹配仅开头带连字符、仅结尾带连字符的独立单词
    pattern = r'(?<!\S)-[a-zA-Z]+(?!\S)|(?<!\S)[a-zA-Z]+-(?!\S)'
    # 先删除符合规则的单词,再清理多余空白
    res = re.sub(pattern, '', line)
    res = re.sub(r'\s+', ' ', res).strip()
    return res

测试效果

将你提供的测试文本传入该函数,输出结果为:

here are some word sub-words sub-word2 example another one

完全符合保留中间带连字符的单词、删除仅首尾带连字符单词的要求。

内容的提问来源于stack exchange,提问作者M.A.G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 20:06:05