2016-04-07 7 views
0

URLのパターンを一致させて正しい結果を得ることに問題があります。URLのパターンと一致するPHP正規表現が必要です

URL例:

#1: http://www.example.com/webapp/first-text-vs-some-text.html 
#2: http://www.example.com/webapp/first-text-a1-vs-sec-b2-text.html 
#3: http://www.example.com/webapp/first-text-a1-vs-sec-b2-text-vs-third-c3-text.html 
#4: http://www.example.com/webapp/some-text-a1-vs-sec-text-b2-vs-third-text-vs-last-text-c1.html 

-vs-無し結果(ヒントは:-vs-はURLを上から一度又は繰り返し示すことができる):

#1: first-text and some-text 
#2: first-text-a1 and sec-b2-text 
#3: first-text-a1, sec-b2-text and third-c3-text 
#4: some-text-1a, sec-text-b2, third-text and last-text-c1 

PHPの方法はありますそれを行うループ?

URL構造の-vs-が1回または複数回見つかることがあります。

パターンが少ない結果を得るべきでしょうか、パターンマッチで行うことはできますか?

まず、指定したURLを分割し、-vs-の左または右の文字&を確認する必要がありますか?

このような状況がありましたか? アイデア

最終的な結果を得るために助けやアイデアを共有してくれてありがとう!

+0

「正しい結果」とは何ですか? – Laurel

+1

あなたは[文字列を取得する]ことができます(http://stackoverflow.com/questions/36439363/cannot-get-my-multiple-regex-working-for-specific-case-in-url-structure)。 "-vs-"で部分文字列を区切ります。 'explode( '-vs-'、$ string);'を使用してください。 Regexは繰り返しグループを(別々に)キャプチャできません – fusion3k

+1

str_replaceだけ使用できませんか? – Andreas

答えて

1

次の正規表現([^\/.]+?)(?:-vs-|\.\w+$)preg_match_allとすると、-vs-の前後に異なる部分を返すことができます。

Regex demo

+0

指定されたURLとスラッシュ/と一致させる方法は、.htmlのinstadを終了しますか?例:http://www.example.com/directory/some-text-a1-vs-sec-text-b2-vs-third-text-vs-last-text-c1/上記のURLの正規表現をテストすると、4番目(3番目)の一致は表示されません。 – Fritex

+1

@Fritex '([^ \ /。] +?)(?:-vs- | \。\ w + $ | \/$)'のように、非捕捉グループに別の条件を追加します。 [デモ](https://regex101.com/r/gU7bW8/2) –

関連する問題