从分隔的字符串中获取子字符串,除了最后一个字符串

时间:2012-11-18 17:11:54

标签: regex

有像

这样的字符串
booboo-en
booboo-duck-en
booboo-the-duck-en
booboo-the-duck-so-nice-en

我尝试提取除最后一个(-en)之外的所有字符串(无论分隔数量的组),以获取:

booboo
booboo-duck
booboo-the-duck

依旧......

使用

^((?:[^-]+-){2}[^-]+).*$

我可以提取2个组,但我不知道如何为任意数量的组修改它......

2 个答案:

答案 0 :(得分:1)

你为什么要使用正则表达式?

至少任何脚本语言都有一个拆分原语

他们通常返回数组

组合拆分和删除数组的最后一个元素是微不足道的

答案 1 :(得分:-1)

试试这个:

^.*(?=-[^-]*$)

这将匹配字符串,直到最后一个破折号:

^       # Start of string
.*      # Match any number of characters
(?=     # until it's possible to match:
 -      #  a dash
 [^-]*  #  followed only by characters other than dashes
 $      #  until the end of the string.
)       # (End of lookahead assertion)