0

正規表現があります

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

その正規表現の後に5つの単語を取得する必要があります。これをどのように達成するかについてのアイデアはありますか?

たとえば、「パワースロットスロットローター-1997-1998オールズモビルリージェンシー-ブレーキ&ブレーキパッド-ブレーキローター」。

「1997-1998OldsmobileRegency-Brakes&」を返す必要があります。

何か案は?

//下のコメントから更新します。

1つの文字列に複数の一致がある可能性があります。例えば

「例:」2000-2009フォードエクスプローラー、2000-2010フォードレンジャー。1674SJTJBACat4wardヘッダー機能」

数列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 に答える