In diesem Artikel werden die Metazeichen regulärer C#-Ausdrücke organisiert. Jedes Zeichen stellt eine Regel dar: normale Zeichen und Metazeichen. Gewöhnliche Zeichen beziehen sich auf Zeichen, deren wörtliche Bedeutung unverändert bleibt und die exakt mit dem Text übereinstimmen, während Metazeichen eine besondere Bedeutung haben und einen Zeichentyp darstellen. Betrachten Sie Text als einen Zeichenstrom, wobei jedes Zeichen an einer Position platziert wird. Im regulären Ausdruck „Roomddd“ sind beispielsweise die ersten vier Zeichen Room gewöhnliche Zeichen . Das folgende Zeichen ist ein Escape-Zeichen und bildet mit dem folgenden Zeichen d ein Metazeichen d, das angibt, dass sich an dieser Position eine Zahl befindet. In der Sprache regulärer Ausdrücke beschrieben: Der reguläre Ausdruck „Roomddd“ erfasst insgesamt 7 Zeichen, was „beginnend mit Room und endend mit drei Zahlen“ bedeutet. Ein Typ Bei einer Zeichenfolge nennen wir diese Art von Zeichenfolge ein Muster (Pattern), auch reguläres Muster genannt. 1. Escape-Zeichen Escape-Zeichen werden verwendet, um gewöhnliche Zeichen in Metazeichen mit besonderer Bedeutung umzuwandeln. Die Bedeutungszeichen sind : t: horizontales Tabulatorzeichen v: vertikales Tabulatorzeichen r: Wagenrücklauf n: Zeilenumbruch \: Stellt ein Zeichen dar, d. h. maskiert das Escape-Zeichen in ein normales Zeichen ": Stellt das Zeichen dar, in C# doppelte Anführungszeichen werden zum Definieren von Zeichenfolgen verwendet. Die in einer Zeichenfolge enthaltenen doppelten Anführungszeichen werden durch „ 🎜>Beim regulären Abgleich wird der Eingabetext als sequenzierter Zeichenstrom betrachtet. Das Zeichenklassen-Metazeichen stimmt mit dem Objekt überein und erfasst das Zeichen. Die sogenannten erfassten Zeichen bedeuten, dass von einem Metazeichen erfasste Zeichen nicht mit anderen Metazeichen abgeglichen werden und nachfolgende Metazeichen nur aus dem verbleibenden Text erneut abgeglichen werden können. Häufig verwendete Zeichenklassen-Metazeichen: : entspricht jedem Zeichen in der Zeichengruppe. : entspricht allem außer der Zeichengruppe „Jedes Zeichen“. von : entspricht jedem Zeichen im Zeichenbereich vom ersten bis zum letzten Zeichen, und der Zeichenbereich umfasst das erste und das letzte Zeichen. [ char_group]: Platzhalter, entspricht jedem Zeichen außer n [^char_group]: entspricht jedem Wortzeichen, Wortzeichen beziehen sich normalerweise auf A-Z, a-z und 0 -9 [first-last]: Entspricht jedem Nicht-Wort-Zeichen, das sich auf Zeichen außer A-Z, a-z und 0-9 bezieht. .: Entspricht jedem Leerzeichen. w: Entspricht jedem Nicht-Wort-Zeichen -Leerzeichen W: entspricht jedem numerischen Zeichen s: entspricht jedem nicht numerischen Zeichen SBeachten Sie, dass Escape-Zeichen auch zu Zeichen gehören Klassenmetazeichen und Zeichen werden auch erfasst, wenn ein regulärer Abgleich durchgeführt wird. d3. Locator D Das vom Locator gefundene (oder erfasste) Objekt ist die Position, die anhand der Position bestimmt, ob das Muster übereinstimmt Erfolgreich erfasst der Locator keine Zeichen und hat eine Breite von Null (Breite ist 0). Häufig verwendete Locators sind: : Standardmäßig die Startposition des Abgleichs string; im Mehrzeilenmodus: Passen Sie die Startposition jeder Zeile an. Passen Sie standardmäßig die Endposition der Zeichenfolge oder die Position vor n am Ende der Zeichenfolge an. Übereinstimmung im Mehrzeilenmodus Die Position vor dem Ende jeder Zeile oder die Position vor n am Ende jeder Zeile. : entspricht der Startposition der Zeichenfolge; : entspricht der Endposition der Zeichenfolge oder der Position vor n am Ende der Zeichenfolge; > : entspricht der Endposition der Zeichenfolge; ^ : entspricht der Endposition der vorherigen Übereinstimmung; $ : entspricht dem Anfang oder Ende Position eines Wortes; A : Passen Sie die mittlere Position eines Wortes an Z zVier, Quantoren , Gier und Faulheit G Quantifizierer beziehen sich auf die Begrenzung der Anzahl der Vorkommen eines vorherigen regulären Ausdrucks. Quantifizierer sind in zwei Modi unterteilt: Der gierige Modus und der gierige Modus beziehen sich auf die Übereinstimmung mit möglichst vielen Zeichen wie möglich, während sich der Lazy-Modus darauf bezieht, möglichst wenige Zeichen abzugleichen. Standardmäßig befinden sich Quantoren im Greedy-Modus. Fügen Sie nach dem Quantor ? hinzu, um den Lazy-Modus zu aktivieren. b *: erscheint 0 oder mehr Mal +: erscheint 1 oder mehr Mal ?: erscheint 0 oder 1 Mal {n}: erscheint n-mal {n,}: erscheint mindestens n-mal {n,m}: erscheint n- bis m-mal Hinweis , erscheint Mehrfach bedeutet, dass das vorherige Metazeichen mehrmals vorkommt. Beispielsweise entspricht d{2} dd, es erscheinen nur zwei Zahlen und die beiden Zahlen müssen nicht identisch sein. Um die gleichen zwei Zahlen darzustellen, muss eine Gruppierung verwendet werden. 5. Zeichen gruppieren und erfassen () Klammern bestimmen nicht nur den Umfang des Ausdrucks , aber auch Um eine Gruppe zu erstellen, ist der Ausdruck in () eine Gruppe, und die Referenzgruppe bedeutet, dass der von den beiden Gruppen übereinstimmende Text genau gleich ist. Die grundlegende Syntax zum Definieren einer Gruppierung: (Muster) Diese Art der Gruppierung bezieht sich auf Zeichen zu: Ein Element. Von Zeichen erfasste Zeichen werden nicht mit anderen Metazeichen abgeglichen, und nachfolgende Metazeichen können nur aus dem verbleibenden Text erneut abgeglichen werden. 1, Gruppennummer und Benennung Standardmäßig wird jeder Gruppe automatisch eine Gruppennummer zugewiesen, die Regeln sind: von links nach rechts, entsprechend der linken Klammer der Gruppe Sie sind in der Reihenfolge ihres Erscheinens nummeriert. Die erste Gruppe hat die Gruppennummer 1, die zweite Gruppe hat die Gruppennummer 2 und so weiter. Sie können auch einen Namen für die Gruppe angeben. Die benannte Gruppe wird ebenfalls automatisch bei 1 nummeriert. Die Syntax zum Angeben eines Namens für die Gruppe lautet : (?< Name > Muster) Im Allgemeinen werden Gruppen in benannte Gruppen unterteilt Gruppen und nummerierte Gruppen. Es gibt folgende Möglichkeiten, Gruppen zu referenzieren: Referenzieren Sie die Gruppe anhand des Gruppennamens: k Referenzieren Sie die Gruppe anhand der Gruppennummer: Nummer Beachten Sie, dass auf Gruppen nur rückwärts verwiesen werden kann, d. h. beginnend mit der linken Seite des regulären Ausdruckstextes muss die Gruppierung definiert werden, bevor später darauf verwiesen werden kann. Die Syntax für die Referenzierung von Gruppen in regulären Ausdrücken lautet „Zahl“. Beispielsweise steht „1“ für die Teilzeichenfolge, die mit Gruppe 1 übereinstimmt, „2“ stellt die Zeichenfolge dar, die mit Gruppe 2 übereinstimmt, und so weiter. Zum Beispiel kann „<(.*?)>.*?1>“ mit valid übereinstimmen Gruppe ist genau die gleiche. 2, Gruppenkonstruktor Die Gruppenkonstruktionsmethode ist wie folgt: (pattern): Erfassen Sie den passenden Unterausdruck und die Gruppierung ist eine Gruppennummer zugewiesen (?< name > pattern):把匹配的子表达式捕获到命名的分组中 (?:pattern):非捕获的分组,并未分组分配一个组号 (?> pattern):贪婪分组 3, gierige Gruppierung Gierige Gruppierung wird auch als Non-Backtracking-Gruppierung bezeichnet. Diese Gruppierung deaktiviert das Backtracking und die Engine für reguläre Ausdrücke gleicht so viele Zeichen wie möglich im Eingabetext ab. Wenn keine weiteren Übereinstimmungen erzielt werden können, gibt es kein Zurückverfolgen, um weitere Musterübereinstimmungen auszuprobieren. (?> Muster) 4, wählen Sie eines der beiden | Mittel oder, Übereinstimmung Beachten Sie bei jedem der beiden, dass | die Ausdrücke auf der linken und rechten Seite in zwei Teile teilt. pattern1 | pattern2 Sechs, Null-Breite-Behauptung Null-Breite bedeutet, dass die Breite 0 ist und die Übereinstimmung die Position ist, also die Übereinstimmung Teilzeichenfolge wird nicht im Matching-Ergebnis angezeigt, und die Behauptung bezieht sich nur auf das Ergebnis der Beurteilung. Nur wenn die Behauptung wahr ist, kann die Übereinstimmung als erfolgreich angesehen werden. Für Locators können Sie den Anfang und das Ende eines Satzes (^ $) oder den Anfang und das Ende eines Wortes (b) abgleichen. Diese Metazeichen stimmen nur mit einer Position überein und geben diese Position an erfüllt ein bestimmtes Die Bedingungen entsprechen stattdessen bestimmten Zeichen, daher werden sie Zusicherungen mit Nullbreite genannt. Die sogenannte Nullbreite bedeutet, dass sie mit keinem Zeichen übereinstimmen, sondern mit einer Position, die sich auf ein Urteil bezieht, und der reguläre Ausdruck nur dann weiterhin übereinstimmt, wenn die Behauptung wahr ist. Behauptungen mit der Breite Null können einer genauen Position entsprechen, anstatt einfach einen Satz oder ein Wort anzugeben. Reguläre Ausdrücke behandeln Text als einen Zeichenfluss von links nach rechts, der als rückwärts (nach hinten schauen) und nach links als vorwärts (nach vorne schauen) bezeichnet wird. Bei regulären Ausdrücken ist die Behauptung nur dann wahr, wenn das angegebene Muster (Muster) übereinstimmt, was als positiver Ausdruck bezeichnet wird, und das nicht übereinstimmende Muster ist wahr, was als negativer Ausdruck bezeichnet wird. Behauptungen mit einer Breite von Null werden entsprechend der Richtung des Abgleichs und der qualitativen Art des Abgleichs in vier Typen unterteilt: (?= pattern):前向、肯定断言 (?! pattern):前向、否定断言 (?<= pattern):后向、肯定断言 (? pattern):后向、否定断言 1,前向肯定断言 前向肯定断言定义一个模式必须存在于文本的末尾(或右侧),但是该模式匹配的子串不会出现在匹配的结果中,前向断言通常出现在正则表达式的右侧,表示文本的右侧必须满足特定的模式: (?= subexpression ) 使用前向肯定断言可以定一个模糊匹配,后缀必须包含特定的字符: \b\w+(?=\sis\b) 对正则表达式进行分析: \b:表示单词的边界 \w+:表示单词至少出现一次 (?=\sis\b):前向肯定断言,\s 表示一个空白字符, is 是普通字符,完全匹配,\b 是单词的边界。 从分析中,可以得出,匹配该正则表达式的文本中必须包含 is 单词,is是一个单独的单词,不是某一个单词的一个部分。举个例子 Sunday is a weekend day 匹配该正则,匹配的值是Sunday,而The island has beautiful birds 不匹配该正则。 2,后向肯定断言 后向肯定断言定义一个模式必须存在于文本的开始(或左侧),但是该模式匹配的子串不会出现在匹配的结果中,后向断言通常出现在正则表达式的左侧,表示文本的左侧必须满足特定的模式: (?<= subexpression ) 使用后向肯定断言可以定一个模糊匹配,前缀必须包含特定的字符: (?<=\b20)\d{2}\b 对正则表达式进行分析: (?<=\b20):后向断言,\b表示单词的开始,20是普通字符 \d{2}:表示两个数字,数字不要求相同 \b:单词的边界 该正则表达式匹配的文本具备的模式是:文本以20开头、以两个数字结尾。 推荐学习:C#.Net教程