2009-03-08 6 views

Antwort

5

Die Regex. * Kann erfolgreich eine Zeichenfolge mit null Zeichen oder das Nichts, das zwischen benachbarten Zeichen auftritt, übereinstimmen.

So entspricht Ihr Muster null Zeichen in den Parens, und dann folgende Nullzeichen unmittelbar danach.

Wenn also Ihre Regex /f(.*)\1/ war, würde die Zeichenfolge "foo" zwischen dem "f" und dem ersten "o" übereinstimmen.

Sie könnten versuchen, .+ anstelle von .* zu verwenden, da dies einer oder mehreren anstelle von null oder mehr entspricht. (Mit. + Sollten Sie die 'oo' in 'foo' übereinstimmen)

+0

Eigentlich/f (. *) \ 1/entspricht "foo", weil der Stern gierig ist. Aber es wird auch nur 'f' passen. –

0

\ 1 ist die Rückreferenz in der Regel für den Ersatz später oder wenn Sie versuchen, Ihre Regex verfeinern, indem Sie eine Übereinstimmung innerhalb einer Übereinstimmung erhalten. Sie sollten nur (. *) Verwenden, dies wird Ihnen die gewünschten Resultate geben und automatisch die Rückreferenznummer 1 erhalten. Ich bin kein Regex-Experte, aber das sind meine Gedanken, die auf meinem begrenzten Wissen basieren.

Als Nebenbemerkung, ich immer wieder auf RegexBuddy, wenn Sie versuchen zu sehen, was wirklich passiert.

+0

Die Absicht könnte sein, eine Zeichenfolge zu finden, die zweimal hintereinander im Text angezeigt wurde. Dafür würde das \ 1 funktionieren. – Mnebuerquo

+0

Das macht Sinn. Meine begrenzten Kenntnisse von Regex zeigen sich noch einmal! –

0

\ 1 ist die "re-match" Anweisung. Die Frage ist, haben Sie sofort wieder Match wollen (zB BLABLA)

/(.+)\1/ 

oder höher (zB BLA ahem BLA)

/(.+).*\1/ 
Verwandte Themen