2014-03-07 29 views
0

嗨朋友我是新來的Perl,我需要一個正則表達式來找到像我在下面突出顯示的那樣,有人能給出解決方案嗎?在Perl中需要RegEx以下場景

&#x的2003;費拉拉-佛羅倫薩 33,58

聖巴特里克&#x的2019; s Purgatory 1,2,5,6,11– 12,16,20,27,61,86,105ʨ 6,127– 62,179,184– 5,219,233 ,237– 8,260

Checco羅西噠Meleto 70,127,140– 3,151

阿拉戈納,Tullia d &#x的2019; 127,161– 2

Checco 70,127,140– 3

 費拉拉-佛羅倫薩 33,58

中號ü納秒&#x的00FC;叔,Sebas ü TIA ü N 215 228– 32

Machiavelli,Niccolò 7– 8,15,26,37– 8,67,74,159,245,249– 50

我給額外的空間來顯示小數字符

謝謝

+0

有一個小竅門,它似乎更容易匹配你不想要的部分,因爲它只是'[\ d,\ s-]'。 – TLP

回答

0

試試這個:

(.+?)(?:[\d\-]+,\s)+.+ 

演示:

http://rubular.com/r/VAsBRQaRmV

和另一個演示(有解釋和次要編輯):http://regex101.com/r/mS9oN3

+0

非常感謝Dr.Kameleon,它的工作原理!但我忘了添加1個項目(例如:葬禮188– 9,198,230)這種情況下它匹配(葬禮188&#x2013),但我需要的是(葬禮) – user3354853

+0

@ user3354853好的,給我第二個 –

+0

我需要的是在數字和逗號開始之前的所有內容(例如:聖帕特里克&#x的煉獄1,2,5,6,11-12,16,20,27,61,86,105-6 ,127-62,179,184-5,219,233,237-8,260)需要(聖帕特里克的煉獄) – user3354853

0

你可以試試這個模式:

(?m)^(?>& *# *x *[A-F0-9]{4};|[\p{L} ,-]+?(?= |&))+ 
+0

謝謝!但這種模式包括「,」,例如:Checco Rossi da Meleto 70 [,] 127 [,] 140– 3 [,] 151 – user3354853

+0

@ user3354853:現在可以使用。 –

+0

非常感謝你卡西米爾和希波呂特它完美的作品對不起,延遲迴復 – user3354853

0

如何:

^(.+?)\s+(?=\d+[,-]) 
+0

謝謝M42爲您提供幫助,對於遲到的回覆感到抱歉 – user3354853