Ich verstehe die regulären Ausdrücke von Js zutiefst-Gruppierung
Ich habe zuvor einen Artikel über den Einstieg mit regulären Ausdrücken geschrieben. Ich dachte, ich wäre relativ mit regelmäßigen Ausdrücken vertraut, aber heute habe ich einen weiteren Fall getroffen. Vielleicht lag es daran, dass ich nicht vorsichtig genug war. Heute werde ich mich darauf konzentrieren, die Gruppierung in den regulären Ausdrücken von JavaScript mit Ihnen zu teilen. Wenn Sie die regulären Ausdrücke von JS nicht genug verstehen, können Sie hier klicken, um mehr zu erfahren.
Die Gruppierung ist in der Regelmäßigkeit ziemlich weit verbreitet. Die Gruppierung, die ich verstehe, ist ein Paar Klammern (). Jedes Paar Klammern repräsentiert eine Gruppe, und die Gruppe kann unterteilt werden in:
• Gruppierung erfassen
• Gruppierung nicht kauft
Gruppierung erfassen
Die Erfassung der Gruppierung wird die Ergebnisse der entsprechenden Gruppierung in Form eines zweiten Terms und eines dritten Terms in einer Funktion wie Match Exec erhalten. Schauen wir uns zuerst ein Beispiel an
var reg =/test (/d+)/; var str = 'neuer Test001 Test002'; console.log (str.match (reg)); // ["test001", "001", Index: 4, Eingabe: "New Test001 Test002"]
Im Code (/d+) befindet sich eine Gruppe (einige Leute nennen es auch Sub-Muster), aber alle repräsentieren die gleiche Bedeutung. Im obigen Beispiel ist Test001 das Ergebnis der genauen Übereinstimmung. Das Matching der Gruppe besteht jedoch darin, Zeichen zu finden, die mit dem Subpattern/D+ aus dem gesamten exakten Übereinstimmungsergebnis übereinstimmen (dh Test001). Hier ist offensichtlich 001. Aber die heute aufgetretene Situation ist so.
var reg =/test (/d)+/; var str = 'neuer Test001 Test002'; console.log (str.match (reg)); // ["test001", "1", Index: 4, Eingabe: "New Test001 Test002"]
Der Unterschied besteht darin, dass (/d+) in (/d)+geändert wird und das gesamte Matching -Ergebnis immer noch Test001 ist, aber das Ergebnis der ersten Gruppenübereinstimmung ist unterschiedlich. Schauen wir uns ihre Unterschiede an
(/d+) Dies ist eine Gruppierungssituation. Da das Matching -Muster standardmäßig ein gieriges Muster ist, ist das Ergebnis des Spiels so viele wie möglich übereinstimmt. Das Ergebnis des Spiels beträgt 001, und dann wird ein Paar Klammern draußen hinzugefügt, was bedeutet, dass das Ergebnis des Spiels in der ersten Gruppe 001 ist. Dies ist auch ein gieriges Muster. Zuerst stimmt es zuerst 0 und dann 0 überein und dann mit dem Ende von 1. Es stimmt auch mit dem Ende dieses Spiels überein. Es scheint, dass es im ersten Beispiel keinen Unterschied zwischen dem Match gibt, aber die Gruppierung (/d) bedeutet hier, eine einzelne Zahl zu entsprechen. Nach meinem vorherigen Verständnis ist es 0, aber dieses Verständnis ist falsch. Da das gesamte Match ein gieriges Muster ist, fängt das Match so weit wie möglich (/d) in der Gruppe das Ergebnis 1 des letzten Spiels auf. Wenn es sich um ein nicht greedisches Muster handelt, passt es so wenig wie möglich überein.
var reg =/test (/d)+?/; var str = 'neuer Test001 Test002'; console.log (str.match (reg)); // ["test001", "0", Index: 4, Eingabe: "Neue Test001 Test002"]
Auf diese Weise beträgt das Matching -Ergebnis (/d) 0. Obwohl es immer noch Ergebnisse gibt, die später übereinstimmen können
Nicht-Kauf-Gruppierung
Eine nicht kaufmännische Gruppierung bedeutet, dass an einigen Stellen ein Paar Klammern benötigt wird, aber sie möchten nicht, dass es sich um eine Capture-Gruppe handelt, dh sie möchten nicht, dass diese Gruppe von Funktionen wie Macth Exec abgerufen wird. Normalerweise gehen ihnen ein Klammern (?: Muster) voraus, so dass es zu einer nicht kreisenden Gruppe wird.
var reg =/test (?:/d)+/; var str = 'neuer Test001 Test002'; console.log (str.match (reg)); // ["test001", Index: 4, Eingabe: "Neue Test001 test002"]
Auf diese Weise gibt es im Match -Ergebnis des Spiels keinen Inhaltsübereinstimmung, was bedeutet, dass der zweite Element fehlt.
Dieser Artikel konzentriert sich darauf, den Unterschied zwischen (/d+) und (/d)+zu erklären, der auch die Grube ist, auf die ich heute getreten bin. Wenn es Fehler gibt, können Sie sie gerne korrigieren.
Der obige Artikel hat ein tiefes Verständnis der regulären JS-Ausdrücke-Gruppierung ist der gesamte Inhalt, den ich mit Ihnen geteilt habe. Ich hoffe, es kann Ihnen eine Referenz geben und ich hoffe, Sie können Wulin.com mehr unterstützen.