Heim  >  Artikel  >  Backend-Entwicklung  >  [C#-Tutorial] Reguläre C#-Ausdrücke

[C#-Tutorial] Reguläre C#-Ausdrücke

黄舟
黄舟Original
2016-12-24 13:37:521029Durchsuche

C# Regulärer Ausdruck

Regulärer Ausdruck ist ein Muster, das mit Eingabetext übereinstimmt. Das .Net-Framework stellt eine Engine für reguläre Ausdrücke bereit, die einen solchen Abgleich ermöglicht. Ein Muster besteht aus einem oder mehreren Zeichen, Operatoren und Strukturen.

Reguläre Ausdrücke definieren

Nachfolgend sind die verschiedenen Kategorien von Zeichen, Operatoren und Strukturen aufgeführt, die zum Definieren regulärer Ausdrücke verwendet werden.

Charakterflucht

Charakterklasse

Anker

Gruppenkonstruktion

Qualifizierer

Rückreferenzkonstruktion

Alternative Konstruktion

Ersetzung

Verschiedene Konstruktion

Zeichen-Escapezeichen

Backslash-Zeichen im regulären Ausdruck () Zeigt an, dass das darauf folgende Zeichen ein Sonderzeichen ist oder sollte wörtlich interpretiert werden.

In der folgenden Tabelle sind die Escape-Zeichen aufgeführt:

Escape-Zeichen

Beschreibung

Muster

Übereinstimmung

a entspricht dem Alarmsymbol (Glocke) u0007. a „Warnung!“ + „u0007“ in „u0007“

b Entspricht in der Zeichenklasse der Rücktaste u0008. [b]{3,} „bbbb“ in „bbbb“

t stimmt mit dem Tabulatorzeichen u0009 überein. (w+)t „Namet“ und „Addrt“ in „NametAddrt“

r entsprechen dem Wagenrücklaufzeichen u000D. (r entspricht nicht dem Zeilenumbruchzeichen n.) rn(w+) „rnHello“ in „rHellonWorld“

v entspricht dem vertikalen Tabulatorzeichen u000B. [v]{2,} „vvv“ in „vvv“

f entspricht dem Formularvorschubzeichen u000C. [f]{2,} „fff“ in „fff“

n entspricht dem Zeilenumbruchzeichen u000A. rn(w+) „rnHello“ in „rHellonWorld.“

e entspricht dem Escape-Zeichen u001B. e „x001B“ in „x001B“

nnn gibt ein Zeichen in oktaler Darstellung an (nnn besteht aus zwei bis drei Ziffern). w

p{ name } entspricht jedem einzelnen Zeichen in der universellen Unicode-Kategorie oder dem durch name angegebenen benannten Block. Das „C“ und „L“ in p{Lu} „City Lights“

P{ name } stimmen mit jedem einzelnen Zeichen überein, das nicht in der universellen Unicode-Kategorie oder dem durch name angegebenen benannten Block enthalten ist. P{Lu} „i“, „t“ und „y“ in „Stadt“

w stimmen mit jedem Wortzeichen überein. w „R“, „o“, „m“ und „1“ in „Raum Nr. 1“

W entspricht jedem Nicht-Wort-Zeichen. Das „#“ in W „Room#1“

s entspricht jedem Leerzeichen. Das „D“ in ws „ID A1.3“

S entspricht jedem Nicht-Leerzeichen. Das „_“ in sS „int __ctr“

d entspricht jeder Dezimalziffer. d „4“ in „4 = IV“

D entspricht jedem Zeichen, das keine Dezimalzahl ist. D " ", "=", " ", "I" und "V" in "4 = IV"

Ankerpunkt

Ankerpunkt oder eine atomare Nullbreitenzusicherung sorgen für die Übereinstimmung Erfolgreich oder fehlschlagen, je nach aktueller Position in der Zeichenfolge. Sie führen jedoch nicht dazu, dass die Engine in der Zeichenfolge voranschreitet oder Zeichen verwendet.

Die folgende Tabelle listet die Ankerpunkte auf:

Behauptung

Beschreibung

Muster

Übereinstimmung

^ Die Übereinstimmung muss am Anfang der Zeichenfolge oder Zeile beginnen. ^d{3} „567“ in „567-777-“

$ Die Übereinstimmung muss am Ende der Zeichenfolge oder vor n am Ende der Zeile oder Zeichenfolge erfolgen. -d{4}$ "-2012" in "8-12-2012"

A Die Übereinstimmung muss am Anfang der Zeichenfolge stehen. Aw{3} „Code“ in „Code-007-“

Z Die Übereinstimmung muss am Ende der Zeichenfolge oder vor n am Ende der Zeichenfolge erscheinen. -d{3}Z „-007“ in „Bond-901-007“

z Die Übereinstimmung muss am Ende der Zeichenfolge erscheinen. -d{3}z „-333“ in „-901-333“

G Die Übereinstimmung muss am Ende der vorherigen Übereinstimmung erscheinen. \G(d) „(1)“, „(3)“ und „(5)“ in „(1)(3)(5)[7](9)“

b muss übereinstimmen. Tritt auf an der Grenze zwischen w (alphanumerischen) und W (nicht alphanumerischen) Zeichen. w „R“, „o“, „m“ und „1“ in „Raum Nr. 1“

B-Übereinstimmungen dürfen an der b-Grenze nicht auftreten. Bendw*b „Ends“ und „Ender“ in „End Sends Endure Lender“

Gruppenkonstruktion

Gruppenkonstruktion beschreibt einen Unterausdruck eines regulären Ausdrucks, der normalerweise zum Erfassen von Eingabezeichen verwendet wird. Eine Teilzeichenfolge von eine Zeichenfolge.

In der folgenden Tabelle sind die Gruppierungskonstrukte aufgeführt:

Gruppierungskonstrukte

Beschreibung

Muster

Übereinstimmung

( Unterausdruck) Erfasst den passenden Unterausdruck und weist ihn einer nullbasierten Sequenznummer zu. (w)1 „ee“ in „deep“

(?2dd749663259a7ede2528ec9cca95d77subexpression) Erfasst übereinstimmende Unterausdrücke in einer benannten Gruppe. (?f5fbfbee748f450acbec5bd3114a2e8bw)kf5fbfbee748f450acbec5bd3114a2e8b Das „ee“ in „deep“

(?30a878cd74d918ee999c6783be1410a8subexpression) definiert die Bilanzkreisdefinition. (((?'Open'()[^()]*)+((?'Close-Open'))[^()]*)+)*(?(Open)(?!))$ "3 „((1-3)*(3-1))“ in +2^((1-3)*(3-1))“

(?: Unterausdruck) definiert eine nicht erfassende Gruppe . Write(?:Line)? „WriteLine“ in „Console.WriteLine()“

(?imnsx-imnsx:subexpression) Wendet die in subexpression angegebenen Optionen an oder deaktiviert sie. Ad{2}(?i:w+)b „A12xl“ und „A12XL“ in „A12xl A12XL a12xl“

(?= Unterausdruck) Positive Lookahead-Behauptung mit Nullbreite. „is“, „ran“ und „out“ in w+(?=.) „He is. The dog rann. The sun is out.“

(?! Unterausdruck) Negative Lookahead-Behauptung mit der Breite Null. b(?!un)w+b „sicher“ und „verwendet“ in „unsicher sicher Einheit verwendet“

(?100be4af801d9f0f698e1972b2c3b144 Unterausdruck) Nicht-Backtracking-Unterausdruck (auch „Gieriger“ genannt). . [13579](?>A+B+) „1ABB“, „3ABB“ und „5AB“ in „1ABB 3ABBC 5AB 5AC“

Qualifizierer

Qualifizierer gibt die Eingabezeichen an. Wie viele Instanzen Das vorherige Element (das ein Zeichen, eine Gruppe oder eine Zeichenklasse sein kann) muss in der Zeichenfolge vorhanden sein, damit eine Übereinstimmung erfolgt. Qualifizierer umfassen die in der folgenden Tabelle aufgeführten Sprachelemente.

In der folgenden Tabelle sind die Qualifikationsmerkmale aufgeführt:

Qualifikationsmerkmal

Beschreibung

Muster

Übereinstimmung

* Stimmt null oder mehrmals mit dem vorherigen Element überein. d*.d ".0", "19.9", "219.9"

+ Stimmt ein- oder mehrmals mit dem vorherigen Element überein. „be+“ „bee“ in „been“, „be“ in „bent“

? Entspricht dem vorherigen Element null oder einmal. "rai?n" "ran", "rain"

{ n } Stimmt genau n-mal mit dem vorherigen Element überein. ",d{3}" ",043" in "1,043,6", ",876", ",543" und ",210" in "9,876,543,210"

{ n ,} Entspricht mindestens dem vorherigen Element n mal. "d{2,}" "166", "29", "1930"

{ n , m } Entspricht dem vorherigen Element mindestens n-mal, aber nicht mehr als m-mal. „19302“ in „d{3,5}“ „166“, „17668“, „193024“

*? Entspricht dem vorherigen Element null oder mehrmals, aber so selten wie möglich. d*?.d ".0", "19.9", "219.9"

+? Passen Sie das vorherige Element einmal oder mehrmals an, aber so selten wie möglich. „be+?“ „be“ in „been“, „be“ in „bent“

?? Entspricht dem vorherigen Element null oder einmal, aber so selten wie möglich. „rai??n“ „ran“, „rain“

{ n }? Entspricht dem führenden Element genau n-mal. „,d{3}?“ „,043“ in „1,043,6“, „,876“, „,543“ und „,210“ in „9,876,543,210“

{ n ,}? mindestens n-mal, aber so selten wie möglich. „d{2,}?“ „166“, „29“ und „1930“

{ n , m } Die Anzahl der Übereinstimmungen mit dem vorherigen Element liegt zwischen n und m, aber die Anzahl der Zeiten ist so klein wie möglich. „d{3,5}?“ „166“, „17668“, „193“ und „024“ in „193024“

Rückreferenzkonstruktion

Rückreferenzen sind in der nachträglichen Identifizierung von zuvor zulässig übereinstimmende Unterausdrücke innerhalb desselben regulären Ausdrucks.

Die folgende Tabelle listet Rückreferenzkonstrukte auf:

Rückreferenzkonstrukt

Beschreibung

Muster

Übereinstimmungen

Nummernrückverweis. Entspricht dem Wert des Zahlenunterausdrucks. (w)1 „ee“ in „seek“

k8474edcb84a5c11f0746677e7d6b45b6 Entspricht dem Wert eines benannten Ausdrucks. (?371aa25074d3a749602b343134e651a8w)k371aa25074d3a749602b343134e651a8 „ee“ in „seek“

Alternatives Konstrukt

Das alternative Konstrukt wird verwendet, um den regulären Ausdruck zu ändern, um einen Entweder/Oder-Abgleich zu ermöglichen.

Die folgende Tabelle listet alternative Konstrukte auf:

Alternative Konstrukte

Beschreibung

Muster

Übereinstimmung

|. Entspricht jedem Element, das durch einen vertikalen Strich (|) getrennt ist. „the“ und „this“ in th(e|is|at) „this is the day.“

(?( expression )yes | no ) Entspricht ja, wenn das Muster des regulären Ausdrucks durch Ausdrucksübereinstimmung angegeben wird, andernfalls entspricht es dem optionalen Teil nein. Der Ausdruck wird als Behauptung mit der Breite Null interpretiert. (?(A)Ad{2}b|bd{3}b) „A10“ und „910“ in „A10 C103 910“

(?( name )yes | no ) Wenn Name oder Übereinstimmungen vorhanden sind ja, wenn die benannte oder nummerierte Erfassungsgruppe eine Übereinstimmung hat; andernfalls stimmt überein, optional nein. (?81d16d9e90d2cdd965fc29116d92bbc8")?(?(quoted).+?"|S+s) Dogs.jpg und „Yiska playing.jpg“ in „Dogs.jpg „Yiska playing.jpg““

Replacement

Replacement ist ein regulärer Ausdruck, der in einem Ersetzungsmuster verwendet wird.

In der folgenden Tabelle sind die für die Ersetzung verwendeten Zeichen aufgeführt:

Zeichen

Beschreibung

Muster

Ersetzung Muster

Eingabezeichenfolge

Ergebniszeichenfolge

$number Ersetzt Teilzeichenfolgen, die mit der Gruppennummer übereinstimmen. b(w+)(s)(w+)b $3$2$1 „one two“ „two one“

${name} Ersetzt Teilzeichenfolgen, die mit dem benannten Gruppennamen übereinstimmen. b(?bc50d2b8e0f6f0a16aa7662b92d4f696w+)(s)(?389baf92d469489f3e373ca0f6c49feaw+)b ${word2} ${word1} „one two“ „two one“

$$ Zeichen „$“ ersetzen . b(d+)s?USD $$$1 „103 USD“ „$103“

$& Ersetzt die gesamte Übereinstimmung durch eine Kopie. ($*(d*(.+d+)?){1}) **$& "$1.30" "**$1.30**"

$` Ersetzen Sie den gesamten Text der Eingabezeichenfolge vor dem Abgleich. B+ $` "AABBCC" "AAAACC"

$' Ersetzt den gesamten Text der übereinstimmenden Eingabezeichenfolge. B+ $' "AABBCC" "AACCC"

$+ Ersetzt die zuletzt erfasste Gruppe. B+(C+) $+ "AABBCCDD" AACCDD

$_ Ersetzt die gesamte Eingabezeichenfolge. B+ $_ "AABBCC" "AAAABBCCCC"

Verschiedene Konstrukte

Die folgende Tabelle listet verschiedene verschiedene Konstrukte auf:

Konstruktion

Beschreibung

Instanz

(?imnsx-imnsx) Optionen wie Groß-/Kleinschreibung in der Mitte des Modus festlegen oder deaktivieren. bA(?i)bw+b entspricht „ABA“ und „Able“ in „ABA Able Act“

(?#comment) Inline-Kommentar. Der Kommentar endet mit der ersten schließenden Klammer. bA(?#Entspricht Wörtern, die mit A beginnen)w+b

# [bis zum Zeilenende] X-Modus-Kommentar. Der Kommentar beginnt mit einem # ohne Escapezeichen und wird bis zum Ende der Zeile fortgesetzt. (?x)bAw+b#Übereinstimmt mit Wörtern, die mit A beginnen

In der folgenden Tabelle sind einige häufig verwendete Methoden in der Regex-Klasse aufgeführt:

Seriennummer

Methode und Beschreibung

1 public bool IsMatch( string input )

Gibt an, ob der im Regex-Konstruktor angegebene reguläre Ausdruck eine Übereinstimmung in der angegebenen Eingabezeichenfolge findet.

2 public bool IsMatch( string input, int startat )

Gibt an, ob der im Regex-Konstruktor angegebene reguläre Ausdruck eine Übereinstimmung in der angegebenen Eingabezeichenfolge findet, beginnend an der angegebenen Startposition im Zeichenfolgenanfang.

3 public static bool IsMatch( string input, string pattern)

Gibt an, ob der angegebene reguläre Ausdruck eine Übereinstimmung in der angegebenen Eingabezeichenfolge findet.

4 öffentliche MatchCollection-Matches( String-Eingabe)

Suche nach allen Übereinstimmungen des regulären Ausdrucks in der angegebenen Eingabezeichenfolge.

5 öffentliche Zeichenfolge Ersetzen( Zeichenfolgeneingabe, Zeichenfolgenersetzung)

Ersetzen Sie in der angegebenen Eingabezeichenfolge alle übereinstimmenden Zeichenfolgen, die dem regulären Ausdrucksmuster entsprechen, durch die angegebene Ersatzzeichenfolge.

6 public string[] Split( string input)

Teilen Sie die Eingabezeichenfolge entsprechend den Positionen, die durch das im Regex-Konstruktor angegebene reguläre Ausdrucksmuster definiert sind, in ein Array von Teilzeichenfolgen auf.

Eine vollständige Liste der Eigenschaften der Regex-Klasse finden Sie in der C#-Dokumentation von Microsoft.


Beispiel 1

Das folgende Beispiel gleicht Wörter ab, die mit „S“ beginnen:

Wenn der obige Code kompiliert und ausgeführt wird, werden die folgenden Ergebnisse erzeugt:

Matching words that start with 'S':
The Expression: \bS\S*
Splendid
Suns

实例 2

下面的实例匹配了以 'm' 开头以 'e' 结尾的单词:

using System;
using System.Text.RegularExpressions;

namespace RegExApplication
{
   class Program
   {
      private static void showMatch(string text, string expr)
      {
         Console.WriteLine("The Expression: " + expr);
         MatchCollection mc = Regex.Matches(text, expr);
         foreach (Match m in mc)
         {
            Console.WriteLine(m);
         }
      }
      static void Main(string[] args)
      {
         string str = "make maze and manage to measure it";

         Console.WriteLine("Matching words start with 'm' and ends with 'e':");
         showMatch(str, @"\bm\S*e\b");
         Console.ReadKey();
      }
   }
}

当上面的代码被编译和执行时,它会产生下列结果:

Matching words start with 'm' and ends with 'e':
The Expression: \bm\S*e\b
make
maze
manage
measure

实例 3

下面的实例替换掉多余的空格:

using System;
using System.Text.RegularExpressions;

namespace RegExApplication
{
   class Program
   {
      static void Main(string[] args)
      {
         string input = "Hello   World   ";
         string pattern = "\\s+";
         string replacement = " ";
         Regex rgx = new Regex(pattern);
         string result = rgx.Replace(input, replacement);

         Console.WriteLine("Original String: {0}", input);
         Console.WriteLine("Replacement String: {0}", result);    
         Console.ReadKey();
      }
   }
}

当上面的代码被编译和执行时,它会产生下列结果:

Original String: Hello   World   
Replacement String: Hello World

 以上就是【c#教程】C# 正则表达式的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn