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 Oldsmobile Regency - Brakes &”;

有任何想法吗?

// 从底部评论更新。

一个字符串中可能有多个匹配项。例如

“例如:”2000-2009 年福特探险者,2000-2010 年福特游侠。1674SJT JBA Cat4ward 接头特性"

我仍在尝试在数字序列 xxxx-xxxx 之后获得第一个 5 个“非空格”。

4

2 回答 2

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

获取一个空格,后跟除空格(即单词)之外的任何内容。并做 5 次。

于 2012-08-03T08:50:26.650 回答
2

按照您的编辑,试试这个:

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

看到它工作

感谢@Ariel 提供了基于此的正则表达式,在通过编辑指定其他要求之前,这是正确的。如果你喜欢这个,也去投票这个答案;-)

于 2012-08-03T09:17:08.047 回答