2011-07-12 65 views
2

我有一個字符串,例如:正則表達式最後一次出現後如何匹配所有,但不包括匹配的字符

black-guitar-12-strings-7584 

,我試圖給一組數字末(並不總是4匹配長度)。

到目前爲止,我有:

(-)[^-]*$ 

其中最後一部分相匹配,但我不希望包括最後一個連字符也。

任何想法?謝謝。

+0

是否有一個地方這不能由分組得到解決的情況下? ' - ([^ - ] *)$'並保存第一個組。 – Tim

回答

6

試試此圖案:\d+$[0-9]+$。它匹配最後一位數字。

4

就忽略它的工作:[^-]+$

對於更復雜的問題,那麼這一個,你也可以看看lookahead/lookbehind,但這些都沒有必要在這裏。

0
(\d+)$ 

應該工作。如果你的數字不只是數字,你可以使用類似於

-(.+?)$ 

我添加了捕獲,因爲我認爲這就是你想要的。它使用一個非貪婪的量詞,它將匹配最小值。

+0

爲什麼在第一個例子中不貪心? – Tim

+0

好點,我會編輯這個。 –

2

如果你想匹配一切後,最後一個「 - 」,這將做到這一點:

[^-]*$ 
相關問題