2016-09-18 6 views
0

2010年から2012までのフォルダを含むリダイレクトルール用の正規表現を作成しようとしていますが、2つの非常に特殊なページスラッグは除外しています。/Regextで始まっているが、含まれていない

/2011/4月11日、いくつかのページ/ :2つのページがあり

/2016/9月18日/私のページ-スラグ/

:私のURLは以下のように設定されています/ 2012/06/15/another-page-2/

私は^/2010 | 2011 | 2012 /.*のようなものがあります。それらは、その年に始まるすべてのサブディレクトリに一致します。ページスラッグ。

(?!some-page | another-page-2)のような否定的な先読みが必要ですが、設定方法は不明です。

+0

あなたが否定を使用する必要があります文字列が含まれていないものと一致するように先読みします。 – Barmar

+0

http://stackoverflow.com/questions/33639856/regex-combine-negative-lookahead-and-regular-search – Barmar

+0

を参照してください。@Barmarこれは非常に役に立ちました。間違いなく正しい方向に私を指摘しました。実際に私を助けたのは、正しい答えが得られるまで正規表現のバリエーションをテストするために使用したdebuggexリンクでした。 – user3376065

答えて

1

2つの正規表現を書くのはなぜでしょうか?もしあなたが望めば、私は確信していることを意味します。

^\/201[012]\/\d*\/\d*\/(?!(some-page|another-page-2)) 

これらの文字列のいずれかをネガティブに楽しみませんか?

あなたは文字列をマッチングさせることと、スラッグページがどこにあるのかを特定する必要があります。 .*のような他のものがあなたが処分したいものをすでに食べていないことを確認する必要があるからです。したがって、ディレクトリを指定して、スラッグページが続くようにする必要があります。次に、否定的な先読みを行います。 .*(否定先読み)のようなことをすると、.*はすべて欲張りになり、その後は$が続きますので、すべてが正常で、負の一致では文字列をディスカウントしないため、動作しなくなることに注意してください。

0

だからここに興味を持っている人のために働いていたものです:本当に私は、正しい答えを得る助けた何

^/(?!.*slug1/|.*slug2/)(?:2010|2011|2012)(.*)$ 

は、あなたが簡単にあなたの正規表現をテストすることができます。このサイトだった:https://www.debuggex.com/

関連する問題