2012-08-03 43 views
0

我有一個正則表達式串後面的正則表達式

$pattern = '/\b\d{4}-\d{4}\b/'; 
preg_match($pattern, $text, $matches); 

我需要的正則表達式後獲得5個詞語。任何想法,我會如何做到這一點?

例如「Power Slot Slotted Rotors - 1997-1998 Oldsmobile Regency - Brakes & Brake Pads - Brake Rotors。」

我需要返回「1997-1998奧茲莫比爾攝政 - 剎車&」;

任何想法?

//從底部評論更新。

一個字符串中可能有多個匹配項。例如

「例如:」2000-2009 Ford Explorer,2000-2010 Ford Ranger。 1674SJT JBA Cat4ward頭功能」

我仍然在試圖讓一5‘的數字序列爲xxxx-xxxx後非白色空間’。

+0

那*不是*「之後的5個單詞......那是**匹配和**之後的5個單詞」 – freefaller 2012-08-03 08:49:31

+0

另外如果我們''''''''''和'&'在技術上不是*詞* * – DaveRandom 2012-08-03 08:50:48

+0

@DaveRandom作爲迂腐你必須說' - '和'&'從技術角度來看,確實如此:-) – arkascha 2012-08-03 08:51:51

回答

2

按照你的編輯,試試這個:

/\b\d{4}-\d{4}(?:\s(?!\d{4}-\d{4})\S+){1,5}\b/ 

See it working

感謝@Ariel的正則表達式,這是基於,這是正確的,直到通過編輯指定了額外的需求。如果你喜歡這個,那就去upvote那個答案吧;-)

+0

工作了不起!謝謝 – 2012-08-03 09:18:37

2
/\b\d{4}-\d{4}([^ ]*){5}\b/ 

獲取一個空格,然後通過任何東西,除了一個空間( 。即一個字)並連續做5次

+0

我建議'\ s'而不是'' - 或者甚至可能是'\ b' – DaveRandom 2012-08-03 08:51:20

+0

@DaveRandom包含換行符,我不知道他是否想要。 – Ariel 2012-08-03 08:52:22

+0

這似乎工作,除非它跟着類似的匹配。例如:「2000-2009 Ford Explorer,2000-2010 Ford Ranger。1674SJT JBA Cat4ward Headers Features」結果在:Array ( [0] => 2000-2009 Ford Explorer,2000- [1] => 2000- ) – 2012-08-03 09:01:13

相關問題