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

如何用正则表达式提取连字符前的内容(不含连字符)?

解决正则提取连字符前内容的问题

我来帮你搞定这个正则问题!你当前用.*\-得到的结果带连字符,是因为这个表达式会匹配到连字符本身。我们可以调整正则,只捕获连字符前面的部分,同时只处理带连字符的字符串,不带连字符的就忽略,完美符合你的需求。

方法1:使用正向预查(零宽度断言)

推荐用这个简洁的正则:

^[a-z]+(?=-)

正则解释:

  • ^:匹配字符串开头,确保我们从最起始位置开始匹配
  • [a-z]+:匹配一个或多个小写字母(完全贴合你例子里的语言代码格式)
  • (?=-):正向预查,仅当后面紧跟连字符时才匹配前面的内容,且不会把连字符包含在结果里

测试你的用例:

  • en-US → 匹配结果为en ✅
  • en-UK → 匹配结果为en ✅
  • en → 无匹配结果(因为没有连字符)✅
  • nl-NL → 匹配结果为nl ✅
  • nl-BE → 匹配结果为nl ✅
  • nl → 无匹配结果 ✅

方法2:使用捕获组

如果你的正则工具支持捕获组,可以用这个表达式:

^(.*)-

然后提取第一个捕获组的内容即可。

正则解释:

  • ^:匹配字符串开头
  • (.*):将连字符前的所有内容捕获到第一个分组中
  • -:匹配连字符本身

如果是用替换功能的场景,可以用查找模式:

^(.*)-.*$

替换为$1,这样带连字符的字符串会被替换成连字符前的内容,不带连字符的字符串不会被匹配,也就不会被修改。

内容的提问来源于stack exchange,提问作者user11480180

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:47:25