2011-03-23 31 views
0

我在這裏缺少一個真的很明顯的事情,但我是新來的正則表達式,所以是一種;-)從每年分別提取字符串電影的名字和年份是可選

我有任意多部電影格式可能會或可能沒有附加的一年。

My Movie Name 2010 
Some.Other.Super.Cool.Movie 
The~Third|Movie.2010 

現在,使用(.+)\W(\d{4})我可以在這兩個電影的日期中提取分成兩組一個包含名稱和其他的一年,但中間一個被忽略?我只是有點不確定如何真正使年份分段可選。

理想情況下,;-),我可以使用單個表達式來返回\ W轉換爲空格的名稱,但是不同的對話。

在此先感謝

+2

你打算如何處理電影在電影中的4號結束?例如,1975年推出的「2000年死亡競賽」。如果你有「2000年死亡競賽」,那麼你很好,但是「死亡競賽2000」又如何呢? – corsiKa 2011-03-23 03:10:10

回答

2

使用?後一個字符組將使它可選的,所以你的情況後(\ d {4})

(.+)\W(\d{4})? 

那是因爲你正在使用(+)貪婪匹配\ W包括新行字符在它的設置(我認爲它至少)。去除尾隨空白字符串,如果這樣做不起作用make(。+)懶惰?它是自己的,(。+?) - 還要考慮\ W可能是這個問題的錯誤定界符。

同樣在最後添加$可能會有所幫助,因爲這需要數字來結束功能,他們可以嘗試lazing匹配和$。

(.+?)\W(\d{4})?$ 
+0

我其實已經嘗試過,但是RegExbuddy告訴我最終我的電影名2010,Some.Other.Super.Cool.Movie和The Third | Movie在組1中以空白,空白和2010組2? – PoweredByPorkers 2011-03-23 03:18:19

0

?使得可選

(.+?)\W?(\d{4})?$ 
相關問題