Regex如何匹配上次出现后的所有内容,但不包括匹配的字符


Regex How to match everything after last occurance, but not including the matched character

我有一个字符串,例如:

black-guitar-12-strings-7584

我正在尝试匹配末尾的一组数字(长度不总是4(。

到目前为止,我有:

(-)[^-]*$

它与最后一部分匹配,但我不想同时包含最后一个连字符。

有什么想法吗?谢谢

尝试以下模式:'d+$[0-9]+$。它匹配最后一个数字序列。

只要省略它就可以了:[^-]+$

对于更复杂的问题,您也可以查看前瞻性/前瞻性,但这些在这里没有必要。

如果你想匹配最后一个"-"之后的所有内容,这将实现:

[^-]*$
('d+)$

应该起作用。如果你不止有数字,你可以使用之类的东西

-(.+?)$

我添加了捕获,因为我认为这就是你想要的。它使用了一个非贪婪的量词,它将匹配最小值。