Ich habe viel Verwirrung im regulären Ausdruck und ich versuche, sie zu lösen. Hier habe ich die folgende Zeichenfolge:Unterschied in der Übereinstimmung aufgrund der Position des negativen Lookahead?
{start}do or die{end}extended string
Meine zwei verschiedene reguläre Ausdrücke, wo ich nur die Position des Punktes geändert:
(.(?!{end}))* //returns: {start}do or di
//^ See here
((?!{end}).)* //returns: {start}do or die
//^ See here
Warum wird die erste Regex isst die letzte „e“?
Und auch, wie sich diese negative Vorschau diese * quantifier nicht gierig machen? Ich meine, warum kann ich Charaktere jenseits von {end} nicht konsumieren?
danke! aber kannst du etwas genauer sein? Warum e {end} wird wegen negativem Lookahead nicht übereinstimmen.Sollte es nicht nur {end} sein? –
@ AL-zami '.' ist selbst gierig, also wird es so viel wie möglich versuchen. Also: '{start} do or diey' wird nicht funktionieren, wegen der legitimen Lookahead, aber es ermüdet so viel wie möglich zu passen und das ist:' {start} do oder di' nur ohne das 'e', weil es passt nicht zum Lookahead. In Ihrem zweiten Fall ist es die gleiche, erwarten Sie einige Dinge getauscht, so wieder versucht, es so weit wie möglich zu entsprechen: '{start} Friss Vogel oder stirb {end} e' und hier wieder ist es nicht wegen des Look-Ahead arbeiten. Es wird also enden mit: '{start} do or diech ', wo der Lookahead nicht passt. (Die Behauptungen sind nie im Spiel) – Rizier123
@ AL-zami Also wo sind wir jetzt mit dieser Frage? – Rizier123