2017-06-06 9 views
1

"/ status"で終わる文字列の一致方法を知っています:^.*status$"subscribe/status"が含まれていない限り、部分文字列 "/ status"と一致する正規表現

しかし、これは "購読/ステータス"で終わる文字列には適用したくありません。

ご協力いただきありがとうございます。

EDIT:私はmongoDBクエリを実行するためにJavascriptライブラリを使用しています。

const query = { 
    "handler_url_str": { 
    "$regex": "^.*status$" 
    } 
}; 

残念ながら、これは「/ステータス」で終わるすべて文書が一致します。これは私がこれまで持っているものです。

+0

あなたはどのような言語を使用していますか? –

+0

私はjavascriptライブラリを介してmongodbクエリを実行しています。あなたの答えはうまくいかず、あなたのデモはしました。 – robinnnnn

答えて

2

あなたはregex demo

詳細を参照してください

"$regex": /^(?!.*subscription\/status$).*\/status$/ 

使用することができます:

  • ^ - 文字列の先頭
  • (?!.*subscription/status$) - 否定先読みはマッチに失敗した後、もし他の0以上の任意の文字
  • /status改行文字以外の任意の0+文字 - - 改行文字(.*)は、文字列
  • .*の終わりにsubscription/statusあるリテラルストリング
  • $ - 文字列の末尾。
+0

あなたはエスケープされたスラッシュを含めるつもりだと思っています – robinnnnn

+1

@robinnnnn:あなたは '' $ regex ":/^(?!.*サブスクリプション\ /ステータス$)。* \/status $ /'を使用しましたか? –

+1

はい、スラッシュはバックスラッシュでエスケープする必要があります –

1

ソリューション

"$regex": "^.*(?<!subscription)\/status$" 

説明

  • ^.* -が先行していない/status -
    • (?<!subscription)\/status続くゼロ以上の文字
    • で始まります
  • $ - パターンの最後
+0

'(?!subscription)'はこのパターンでは重複していますが、それはlook * behind *の場合のみ機能します。 –

+0

@WiktorStribiżewupdated –

+0

@ShammelLee私はこれを試しましたが、 "先行するトークンは定量化できません"というエラーで終了しました:https://regex101.com/r/dA6hfQ/2 – robinnnnn

関連する問題