2017-06-06 3 views
1

Ich weiß, wie Zeichenfolgen übereinstimmen, die mit "/ status" enden: ^.*status$.Regex, um Zeichenfolgen mit Teilzeichenfolge "/ Status" zu entsprechen, es sei denn es enthält "Abonnement/Status"

Ich möchte jedoch nicht, dass dies für Strings gilt, die in "subscription/status" enden.

Ihre Hilfe wird sehr geschätzt!

BEARBEITEN: Ich verwende eine Javascript-Bibliothek, um eine MongoDB-Abfrage auszuführen. Das ist, was ich habe, so weit:

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

Leider ist dies entspricht alle Dokumente, die in "/ Status" zu beenden.

+0

Welche Sprache verwenden Sie? –

+0

Ich führe eine Mongodb-Abfrage über Javascript-Bibliothek. wird meinen Beitrag entsprechend aktualisieren – robinnnnn

Antwort

2

können Sie verwenden

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

Siehe regex demo

Einzelheiten:

  • ^ - Beginn der Zeichenfolge
  • (?!.*subscription/status$) - ein negativer Look-Ahead-Fehler, das Spiel, wenn nach alle 0+ Zeichen andere th ein Zeilenumbruch Zeichen (.*), gibt es subscription/status am Ende der Zeichenkette
  • .* - jedes 0+ Zeichens anders als Zeilenumbruch Zeichen
  • /status - a literal Teilzeichenfolge
  • $ - Ende der Schnur.
+0

Ihre Antwort hat nicht funktioniert, aber Ihre Demo tat. Ich denke, dass Sie die gefliesten Schrägstriche mit einschließen wollten – robinnnnn

+1

@robinnnnn: Meinst du, dass du '" $ regex "benutzt hast: /^(.!. * subscription \/status $). * \/status $ /'? –

+1

ja, die Schrägstriche müssen mit einem Backslash –

1

Lösung

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

Erklärung

  • ^.* - beginnen mit null oder mehr Zeichen
  • Gefolgt von
    • (?<!subscription)\/status - /status Voranstellung von subscription
  • $ - Ende Muster
+0

''(?! Subscription)'' in diesem Muster redundant ist, würde es nur funktionieren, wenn es ein Blick * hinter * wäre. –

+0

@ WiktorStribiżew aktualisiert –

+0

@ShammelLee Ich versuchte dies, aber endete mit einem "vorausgehenden Token ist nicht quantifizierbar" Fehler: https://regex101.com/r/dA6hfQ/2 – robinnnnn

Verwandte Themen