2011-11-24 117 views
-1

我有四種類型的字符串,如下所示。不同之處在於兩個數字(23)(15)可能在字符串中或不在那裏。PHP中的複雜正則表達式

(23) Abc 11 (15) Krtss 14 (25:05 IN 2ND) 
Abc 11 (15) Krtss 14 (25:05 IN 2ND) 
(23) Abc 11 Krtss 14 (25:05 IN 2ND) 
Abc 11 Krtss 14 (25:05 IN 2ND) 

文本AbcKrtss可以是任何兩個人的名字。這些名稱甚至可能包含空格或連字符。

我需要:

  1. 一個正則表達式,從所有4個字符串中提取 「ABC」。
  2. 第二個單一正則表達式從所有4個字符串中提取「Krtss」。

這裏AbcKrtss是兩個名字,也可能包含空格和連字符。

如果一個正則表達式是不可能的,請給我一個小的PHP代碼片段來獲得所需的輸出。

+0

我建議http://www.rubular.com/用於與正則表達式一起玩,並在鍵入時查看結果。 – deceze

+0

@deceze - 你如何看待[Regex Coach](http://weitz.de/regex-coach/)? –

+0

@Jared「...是*** Windows ***的圖形應用程序...」對不起,沒有太多。 ; o)至少把人們簡單地聯繫起來並不那麼容易。 :) – deceze

回答

2

如果你想要的是一個簡單的答案來獲得這兩個名字,然後做到這一點:

/.+?(\w[\w\s-]*) \d+.*? ([\w\s-]+) \d+ \(/ 

注意,第一個名字,我執行,它以字母開頭,以避免在第一個加括號的數字後意外地佔用了空間,如果它存在的話。如果這不是問題,那麼可以使parens中的正則表達式的第一部分與第二部分相同。

+0

謝謝。有用。這兩個名字都以字母開頭。我唯一需要做的就是在所有字符串的開始處連接一個空格,以便在所有情況下都能夠正常工作,而不必刪除第一個字母。 – user1058797