2017-08-09 13 views
1

私は正規表現(PCRE)を解決するための助けが必要です。以下の複数のURLからhello-world部分を抽出したいと思います。URLの一部を正規表現するには

^/news/(.*?)/$ 

https://www.example.com/news/2017-08-09/hello-world/topics/ 

https://www.example.com/news/2017-08-09/hello-world/gallery/ 

https://www.example.com/news/2017-08-09/hello-world/ 

をしかし、これは2017-08-09/hello-world/topicsキャプチャし、ハロー世界は未知の文字を表し、残りは固定されている場合は、これを試して、私は唯一のhello-world

+0

ここでのルールは何ですか?要件を定式化してください。 –

+0

もし私が正しいことを得て、どのURLにhello-worldが含まれているかを知りたいのであれば、パターンとして 'hello-world'を使うのはなぜですか? – Igle

+0

'/ hello-world /'をやってしまうのを防ぐための要件はありますか? – Bic

答えて

2

あなたはPCREでこの正規表現を使用することができます。

~/news/[^/]*/\K[^/]+~ 
  • /news/[^/]*//
  • \Kに続くゼロ以上の非/続い/news/を一致:マッチ:マッチした情報
  • [^/]+を見送ります1つまたは複数の非 - /文字

RegEx Demo


また、キャプチャグループを使用することができる:[0-9] {4}

/news/[^/]*/([^/]+) 

とエキスグループ#2

RegEx Demo 2

+0

ここで$グループを設定しますか? – Maca

+0

'$'グループはどういう意味ですか? 'preg_match_all'を使ってマッチを得る – anubhava

+0

これをnginx.conf – Maca

0

が必要になります:私は今のところこれを得た

^/news/2017-08-09/(.*?)/.*$ 

日付が固定されていない場合は、\ d {4} - \ d {2} - \ d {2}や必要なもののように、その形式を指定してその形式を使用することができます。