有类似的字符串
booboo-en
booboo-duck-en
booboo-the-duck-en
booboo-the-duck-so-nice-en
我试图提取除最后一个 ( ) 之外的所有字符串(无论分隔组的数量-en
)以获得:
booboo
booboo-duck
booboo-the-duck
等等...
使用
^((?:[^-]+-){2}[^-]+).*$
我可以提取 2 个组,但我不知道如何为任意数量的组修改它...
有类似的字符串
booboo-en
booboo-duck-en
booboo-the-duck-en
booboo-the-duck-so-nice-en
我试图提取除最后一个 ( ) 之外的所有字符串(无论分隔组的数量-en
)以获得:
booboo
booboo-duck
booboo-the-duck
等等...
使用
^((?:[^-]+-){2}[^-]+).*$
我可以提取 2 个组,但我不知道如何为任意数量的组修改它...
你为什么要为此使用正则表达式?
至少任何脚本语言都有拆分原语
他们通常返回数组
合并拆分和删除数组的最后一个元素是微不足道的
试试这个:
^.*(?=-[^-]*$)
这将匹配字符串直到最后一个破折号之前:
^ # 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)