Heim > Backend-Entwicklung > C++ > Warum ist `\ d` weniger effizient als` [0-9] `in C# regex?

Warum ist `\ d` weniger effizient als` [0-9] `in C# regex?

Barbara Streisand
Freigeben: 2025-01-31 18:41:08
Original
193 Leute haben es durchsucht

Why is `d` Less Efficient Than `[0-9]` in C# Regex?

c#regulärer Ausdruck

Die Effizienz ist niedriger als : Unterschiede für Anfragen d [0-9] Die jüngste Leistung wird relativ unerwartet entdeckt. Normalerweise sollte die Effizienz des angegebenen Zeichens höher als der Zeichensatz sein. Auch im Vergleich zu dem langwierigeren

-Scharaktersatz zeigt

den Nachteil der Leistung. d [0-9] Um dieses überraschende Ergebnis zu erklären, lassen Sie uns einige mögliche Gründe untersuchen: [0123456789] d <.> 1. Unicode Digitale Erkennung:

repräsentiert alle Unicode -Zahlen, nicht nur 10 Zeichen, die in

angegeben sind. Unicode enthält andere Zahlen aus verschiedenen Sprachen, wie z. B. persische Ziffern (۱۲۳۴۵۶۷۸۹). Dieser breitere Bereich kann zusätzliche Berechnungsaufwand einführen, wodurch die Effizienz von verringert wird.

Um dieses Konzept zu erklären, können wir den folgenden Code verwenden, um eine Liste aller Unicode -Nummern zu generieren:

d [0-9] Dies erzeugt eine lange Zeichenfolge, die die folgenden Zeichen (und andere Zeichen) enthält: d

٠١٢٣٤٥٦٧٨٩۰۱۲۳۴۵۶۷۸۹߀߁߂߃߄߅߆߇߈߉०१२३४५६७८९০১২৩৪৫৬৭৮৯੦੧੨੩੪੫੬੭੮੯૦૧૨૩૪૫૬૭૮૯

<.> 2. Implementierungsunterschiede:

StringBuilder sb = new StringBuilder();
for (UInt16 i = 0; i < 0x10FFFF; i++)
{
    if (char.IsDigit((char)i))
    {
        sb.Append((char)i);
    }
}
string allUnicodeDigits = sb.ToString();
Nach dem Login kopieren

Die reguläre Expressionsmotor kann auf unterschiedliche Weise

und

erreichen, was zu Leistungsunterschieden führen kann. C#Die reguläre Expressionsmotor kann

spezifisch optimieren, um die Effizienz zu verbessern, und der breitere Bereich von

kann eine solche Optimierung einschränken. Schlussfolgerung:

d Obwohl es zu Beginn überraschend war, kann die [0-9] langsamere Leistung auf die Expansionserkennung von Unicode -Zahlen zurückgeführt werden. Bei Verwendung eines begrenzten Zahlensatzes (z. B. 0-9) kann [0-9] oder d eine bessere Effizienz bieten. Wenn Sie jedoch eine breitere Reihe von Zahlen aus verschiedenen Sprachen anpassen müssen, ist

immer noch ein leistungsstarkes Werkzeug.

Das obige ist der detaillierte Inhalt vonWarum ist `\ d` weniger effizient als` [0-9] `in C# regex?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage