2016-09-06 4 views
0

Ich bin mit diesem regexregex disqualifizieren, wenn gefolgt von einem Zeichen - Wie dieses Problem zu beheben

/foo/bar/([^ ]*)/{0,1}(?!.) 

im Grunde, was es

/foor/bar/xxxxxx/ 
       |__optional but nothing after this 

Die Zeichenfolge im charact „/“ enden könnten aber erlauben sollte nichts sollte danach erlaubt sein. Um dies i

tat zu erreichen
/foo/bar/([^ ]*)/{0,1}(?!.) 
      A  B C 
A is ([^ ]*) means allow anything except a space 
B is /{0,1} which basically means that the character/should be optional 
C is (?!.) which basically is a negative lookahead that no character should be next 

Am ich diese richtig zu tun? Wenn ich die Zeichenfolge

/foo/bar/somestuff/Whatever 

verwenden, wenn die Regex qualifiziert. Ich möchte, dass es sich wegen Was auch immer nicht qualifiziert. Was mache ich falsch

Antwort

1

Sie müssen ausschließen / in (A):

/foo/bar/([^ /]*)/{0,1}(?!.) 

Sie auch diese durch Verwendung ? statt {0,1} vereinfachen und passend zum Ende des Eingangs ($) statt die negative Vorausschau:

/foo/bar/([^ /]*)/?$ 
+0

Können Sie mir was sagen? Ist genannt und was macht es? –

+0

'?' Ist das Fragezeichen. es bedeutet "Übereinstimmung 0 oder 1" von allem, was dem "?" vorausgeht - es hat genau die gleiche Bedeutung wie "{0,1}", arbeitet aber auch mit einfacheren Parsern für reguläre Ausdrücke, die das '{' m' nicht verstehen, 'n'}' Syntax. –

Verwandte Themen