post
、またはpost put
、さらにはget put post
のように見える文字列があることが課題です。これらはすべて一致しなければなりません。好ましくは、[space]post
またはget[space]
のような逸脱をマッチさせるべきではない。以前のキャプチャグループに基づいてRegexをマッチさせる方法はありますか?
は現在、私は、私は二回(post|put|delete|get)
を指定する必要がありましたので、しかし、私は、それに満足していないよ、この
^(post|put|delete|get)(()(post|put|delete|get))*$
を思い付きました。 post post
のような重複にもマッチします。
私は何とか最初のグループに逆参照(?)を使用したいので、同じ条件を2回指定する必要はありません。
はしかし、後方参照\1
は、たとえば、私
のみ試合
post post
役立つだろう、それは私が何をしたいの反対です。私は
ではなかった最初のキャプチャグループの単語に一致するようにしたいと思います以前に文字列に見つかりました。
これも可能ですか?私はSOの質問を見てきましたが、私のGoogle-fuは私を逃しています。
試した['^(post | put | delete | get)((?!\ 1)(?1))* $'](https://regex101.com/r/aR0tA4/1)?それはPCREで動作します。あなたの正規表現の味は何ですか?この場合、どの言語/正規表現ライブラリを使用しているかを知ることは重要です。 –
@WiktorStribiżew...私は '(?1)'を逃してしまった - 私はそれが存在することさえ知りませんでしたが、明らかに、それは否定的な先読みとは別に、この解決策の鍵です。答えとして投稿すると、私はそれを受け入れます。 – EpicPandaForce
受け入れられた答えのための注意:本当の、フレーバーは本当に正規表現エンジンで問題ですので、Javascriptでは、再帰的サブルーチン呼び出しを[最初の呼び出しといくつかのマイナーな調整](https://regex101.com/r/)に置き換える必要があります(post!put | delete | get)(?!。* \ 4))* $ ' – EpicPandaForce