[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Regular_expressions/Capturing_group [Back]  [Original]

Erfassungsgruppe: (...) - JavaScript | MDN

Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.

View in English Always switch to English

Erfassungsgruppe: (...)

Baseline Weitgehend verfgbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Gerten und in vielen Browserversionen. Sie ist seit Juli 2015 browserbergreifend verfgbar.

Eine Erfassungsgruppe gruppiert ein Teilmuster, sodass Sie einen Quantor auf die gesamte Gruppe anwenden oder Disjunktionen innerhalb davon verwenden knnen. Sie merkt sich Informationen ber das Teilmuster-Match, sodass Sie spter mit einem Backreference darauf zurckgreifen oder die Informationen ber die Match-Ergebnisse abrufen knnen.

Wenn Sie das Ergebnis des Teilmuster-Matches nicht bentigen, verwenden Sie stattdessen eine nicht erfassende Gruppe, was die Leistung verbessert und Refactoring-Gefahren vermeidet.

In diesem Artikel

Syntax

regex
(pattern)

Parameter

pattern

Ein Muster, das alles enthalten kann, was Sie in einem Regex-Literal verwenden drfen, einschlielich einer Disjunktion.

Beschreibung

Eine Erfassungsgruppe funktioniert wie der Gruppierungsoperator in JavaScript-Ausdrcken und ermglicht Ihnen, ein Teilmuster als einzelnes Atom zu verwenden.

Erfassungsgruppen werden in der Reihenfolge ihrer ffnenden Klammern nummeriert. Die erste Erfassungsgruppe wird mit 1 nummeriert, die zweite mit 2 und so weiter. Benannte Erfassungsgruppen sind ebenfalls Erfassungsgruppen und werden zusammen mit anderen (unnamede) Erfassungsgruppen nummeriert. Die Informationen des Erfassungsgruppen-Matches knnen abgerufen werden durch:

Hinweis: Selbst im Ergebnis-Array von exec() werden Erfassungsgruppen durch die Nummern 1, 2 usw. abgerufen, da das 0-Element das gesamte Match ist. \0 ist kein Backreference, sondern eine Zeichenflucht fr das NUL-Zeichen.

Erfassungsgruppen im Regex-Quellcode entsprechen eins-zu-eins ihren Ergebnissen. Wenn eine Erfassungsgruppe nicht gematcht wird (zum Beispiel, wenn sie zu einer nicht passenden Alternative in einer Disjunktion gehrt), ist das entsprechende Ergebnis undefined.

js
/(ab)|(cd)/.exec("cd"); // ['cd', undefined, 'cd']

Erfassungsgruppen knnen quantifiziert werden. In diesem Fall sind die Match-Informationen, die dieser Gruppe entsprechen, das letzte Match der Gruppe.

js
/([ab])+/.exec("abc"); // ['ab', 'b']; because "b" comes after "a", this result overwrites the previous one

Erfassungsgruppen knnen in Lookahead und Lookbehind Assertionen verwendet werden. Da Lookbehind-Assertionen ihre Atome rckwrts matchen, ist das endgltige Match, das dieser Gruppe entspricht, dasjenige, das am linken Ende des Strings erscheint. Die Indizes der Match-Gruppen entsprechen jedoch immer noch ihren relativen Positionen im Regex-Quellcode.

js
/c(?=(ab))/.exec("cab"); // ['c', 'ab']
/(?<=(a)(b))c/.exec("abc"); // ['c', 'a', 'b']
/(?<=([ab])+)c/.exec("abc"); // ['c', 'a']; because "a" is seen by the lookbehind after the lookbehind has seen "b"

Erfassungsgruppen knnen verschachtelt sein, wobei die uere Gruppe zuerst nummeriert wird und dann die innere Gruppe, da sie durch ihre ffnenden Klammern angeordnet sind. Wenn eine verschachtelte Gruppe durch einen Quantor wiederholt wird, werden jedes Mal, wenn die Gruppe matcht, die Ergebnisse der Untergruppen alle berschrieben, manchmal mit undefined.

js
/((a+)?(b+)?(c))*/.exec("aacbbbcac"); // ['aacbbbcac', 'ac', 'a', undefined, 'c']

Im obigen Beispiel wird die uere Gruppe dreimal gematcht:

  1. Matcht "aac", mit Untergruppen "aa", undefined und "c".
  2. Matcht "bbbc", mit Untergruppen undefined, "bbb" und "c".
  3. Matcht "ac", mit Untergruppen "a", undefined und "c".

Das Ergebnis "bbb" des zweiten Matches bleibt nicht erhalten, da es durch das dritte Match mit undefined berschrieben wird.

Sie knnen die Start- und Endindizes jeder Erfassungsgruppe im Eingabestring erhalten, indem Sie das d Flag verwenden. Dies erzeugt eine zustzliche indices Eigenschaft auf dem Array, das von exec() zurckgegeben wird.

Sie knnen optional einer Erfassungsgruppe einen Namen zuweisen, der hilft, Fallstricke in Bezug auf Gruppenpositionen und Indizierung zu vermeiden. Siehe Benannte Erfassungsgruppen fr weitere Informationen.

Klammern haben in verschiedenen Regex-Syntaxen andere Zwecke. Zum Beispiel umschlieen sie auch Lookahead- und Lookbehind-Assertionen. Da diese Syntaxen alle mit ? beginnen und ? ein Quantor ist, der normalerweise nicht direkt nach ( auftreten kann, fhrt dies nicht zu Mehrdeutigkeiten.

Beispiele

Datum matchen

Das folgende Beispiel matcht ein Datum im Format YYYY-MM-DD:

js
function parseDate(input) {
  const parts = /^(\d{4})-(\d{2})-(\d{2})$/.exec(input);
  if (!parts) {
    return null;
  }
  return parts.slice(1).map((p) => parseInt(p, 10));
}

parseDate("2019-01-01"); // [2019, 1, 1]
parseDate("2019-06-19"); // [2019, 6, 19]

Zitate paaren

Die folgende Funktion matcht die Muster title='xxx' und title="xxx" in einem String. Um sicherzustellen, dass die Anfhrungszeichen bereinstimmen, verwenden wir ein Backreference, um auf das erste Anfhrungszeichen zu verweisen. Der Zugriff auf die zweite Erfassungsgruppe ([2]) gibt den String zwischen den bereinstimmenden Anfhrungszeichen zurck:

js
function parseTitle(metastring) {
  return metastring.match(/title=(["'])(.*?)\1/)[2];
}

parseTitle('title="foo"'); // 'foo'
parseTitle("title='foo' lang='en'"); // 'foo'
parseTitle('title="Named capturing groups\' advantages"'); // "Named capturing groups' advantages"

Spezifikationen

Spezifikation
ECMAScript 2027 LanguageSpecification
# prod-Atom

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page