1

有类似的字符串

booboo-en
booboo-duck-en
booboo-the-duck-en
booboo-the-duck-so-nice-en

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

booboo
booboo-duck
booboo-the-duck

等等...

使用

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

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

4

2 回答 2

1

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

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

他们通常返回数组

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

于 2012-11-18T17:23:20.647 回答
0

试试这个:

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

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

^       # 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)
于 2012-11-18T17:15:16.670 回答