Heim >Backend-Entwicklung >C++ >Warum ist `\ d` langsamer als` [0-9] `in C# regex?
c#regulärer Ausdruck
langsamer als langsamer d
[0-9]
In diesem Artikel wird eine überraschende Entdeckung in der C#-Motor für den regulären Expression erörtert:
-Scharakterbereiche, auch wenn d
ein Supersatz von [0-9]
ist. [0-9]
d
Der Unterschied zwischen
d
[0-9]
Der Hauptgrund für den Effizienzunterschied ist der Unterschied zwischen diesen beiden Zeichen:
:
d
: d
stimmt nur mit der Nummer 0-9 überein. Es ist eine kompakte Darstellung des Zeichensets . [0-9]
[0123456789]
Wenn die Zeichenfolge mit dem regulären Ausdruck angepasst wird, muss die reguläre Expression Engine jedes Zeichen in der Zeichenfolge mit der angegebenen Zeichenklasse vergleichen. Für muss zusätzliche Inspektionen durchgeführt werden, um festzustellen, ob es sich bei dem Zeichen um eine Unicode-Zahl handelt, die möglicherweise höher ist als das einfache Überprüfungszeichen im Bereich von 0-9. Der von bereitgestellte Testcode zeigt diesen Leistungsunterschied. In mehr als 10.000 Zufallszeichenfolge (jede Zeichenfolge enthält etwa 50%der Zahlen) werden folgende Ergebnisse erzielt:
d
regulärer Ausdruck
regulärer Ausdruck : 00: 00: 00.1357972 (schnell)
regulärer Ausdruck
: 00: 00: 00.1388997 (etwas langsamer alsd
[0-9]
[0123456789]
zu verwenden. [0-9]
Das obige ist der detaillierte Inhalt vonWarum ist `\ d` langsamer als` [0-9] `in C# regex?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!