Perlmuster stricken rund

Machen Sie sich keine Sorgen, wenn Ihnen das jetzt nicht ganz Sinn macht, im Einführungsvideo zum optionalen Strickprojekt werde ich Ihnen das noch ein bisschen näher erklären! Das Muster verwendet eine Unicode-Eigenschaft (-p-…”- oder -p-…”); oder Jedes einzelne Zeichen in einem Muster stimmt mit demselben Zeichen in der Zielzeichenfolge überein, es sei denn, es handelt sich um ein Metazeichen mit einer in diesem Dokument beschriebenen besonderen Bedeutung. Eine Sequenz von Nicht-Metazeichen entspricht der gleichen Sequenz in der Zielzeichenfolge, wie wir oben mit m/abc/ gesehen haben. Ein mächtiges Werkzeug zur Optimierung solcher Bestien ist eine sogenannte “unabhängige Gruppe”, die sich nicht zurückverfolgt (siehe (?>Muster)). Beachten Sie auch, dass Lookahead/Lookbehind-Assertionen ohne Länge nicht zurückverfolgt werden, um die Schwanzübereinstimmung zu erzielen, da sie sich im “logischen” Kontext befinden: nur, ob sie übereinstimmen, wird als relevant angesehen. Ein Beispiel, in dem Nebenwirkungen von Lookahead die folgende Übereinstimmung beeinflusst haben könnten, finden Sie unter (?>Muster). bedeutet, Unicode-Regeln beim Musterabgleich zu verwenden. Auf ASCII-Plattformen bedeutet dies, dass die Code-Punkte zwischen 128 und 255 ihre lateinischen (ISO-8859-1) Bedeutungen (die die gleichen wie Unicode sind) übernehmen. (Sonst hält Perl ihre Bedeutung für undefiniert.) Unter diesem Modifikator wird die ASCII-Plattform effektiv zu einer Unicode-Plattform; Und daher stimmt z. B. mit einem der mehr als 100_000 Wortzeichen in Unicode überein. (?>muster) deaktiviert die Rückverfolgung nicht vollständig, sobald sie übereinstimmen. Es ist immer noch möglich, das Konstrukt hinter sich zu lassen, aber nicht in das Konstrukt hinein. Also (((?>a*)|(? >b*))ar wird immer noch mit “bar” übereinstimmen.

Bei einfachen Gruppen, wie z. B. dem Muster (?> [)]+ ) kann ein vergleichbarer Effekt durch negatives Lookahead erreicht werden, wie in [()]+ (?! [^()] ) . Dies war nur 4 mal langsamer auf einer Schnur mit 1000000 “a” s. Viele der schönsten (aber teuersten Garn) kommt in diese Hanks oder Skeins gewickelt (ich habe den Begriff synonym verwendet gehört). Die einzige Warnung, die ich darüber geben würde, ist, dass sie in einen Ball gewickelt werden müssen, bevor Sie mit ihnen stricken können. Um dies zu tun, können Sie einen “Ballwicker” verwenden oder Sie können zwei sehr geduldige Freunde Stühle verwenden, um für Sie zu halten, während Sie Wind. Ein “unabhängiger” Unterausdruck, der mit der Teilzeichenfolge übereinstimmt, mit der ein eigenständiges Muster übereinstimmen würde, wenn es an der angegebenen Position verankert wäre, und mit nichts anderem als dieser Teilzeichenfolge übereinstimmt.

Dieses Konstrukt ist nützlich für Die Optimierungen von” ansonsten “ewigen” Übereinstimmungen, da es nicht zurückverfolgt wird (siehe Backtracking). Es kann auch an Orten nützlich sein, wo die “Grab alles, was Sie können, und geben Sie nichts zurück” Semantik ist wünschenswert. In diesem Fall wird das ja-Muster nie direkt ausgeführt, und es ist kein No-Pattern zulässig. Ähnlich im Geistwie (? 0) aber effizienter. Siehe unten für Details. Vollständige Syntax: (?( DEFINE)Definitionen…) Muster, die noch nicht in einer Variablen gespeichert sind, müssen an beiden Enden durch Delimitterzeichen begrenzt werden. Dies sind oft, wie im obigen Beispiel, Schrägstriche, und die typische Art und Weise, wie ein Muster in der Dokumentation geschrieben wird, ist mit diesen Schrägstrichen. In den meisten Fällen ist der Delimitter das gleiche Zeichen, vorund und hinten, aber es gibt ein paar Fälle, in denen ein Zeichen aussieht, als ob es eine Spiegelbildverknüpfung hat, wobei die Eröffnungsversion das Anfangstrennzeichen ist, und das schließende ist das Endtrennzeichen, wie dies dem Operator “Schnittgruppe” ähnlich ist :: von Raku. Wie (*PRUNE) stimmt dieses Verb immer überein, und wenn es bei einem Fehler zurückverfolgt wird, bewirkt es, dass das regex-Modul die nächste Änderung in der innersten einschließenden Gruppe (Erfassen oder anderweitig) versucht, die Überwechselungen hat.