Maison > développement back-end > C++ > Pourquoi `\ d` est-il moins efficace que` [0-9] `en C # regex?

Pourquoi `\ d` est-il moins efficace que` [0-9] `en C # regex?

Barbara Streisand
Libérer: 2025-01-31 18:41:08
original
134 Les gens l'ont consulté

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

C # Expression régulière

L'efficacité est inférieure à : Différences de performances d'enquête d [0-9] La performance récente est découverte relativement inattendue. Habituellement, l'efficacité du caractère spécifié de la portée doit être plus élevée que le jeu de caractères. De plus, même par rapport au jeu de caractères plus long

,

montre également l'inconvénient des performances. d [0-9] Afin d'expliquer ce résultat surprenant, explorons quelques raisons possibles: [0123456789] d <.> 1. Unicode Reconnaissance numérique:

représente tous les numéros Unicode, pas seulement 10 caractères spécifiés dans

. Unicode contient d'autres nombres de diverses langues, telles que les chiffres persans (۱۲۳۴۵۶۷۸۹). Cette plage plus large peut introduire des frais généraux de calcul supplémentaires, réduisant ainsi l'efficacité de .

Afin d'expliquer ce concept, nous pouvons utiliser le code suivant pour générer une liste de tous les numéros Unicode:

d [0-9] Cela générera une longue chaîne contenant les caractères suivants (et autres caractères): d

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

<.> 2. Différences d'implémentation:

<code class="language-csharp">StringBuilder sb = new StringBuilder();
for (UInt16 i = 0; i < 0x10FFFF; i++)
{
    if (char.IsDigit((char)i))
    {
        sb.Append((char)i);
    }
}
string allUnicodeDigits = sb.ToString();</code>
Copier après la connexion

Le moteur d'expression régulière peut atteindre

et

de différentes manières, ce qui peut entraîner des différences de performances. C # Le moteur d'expression régulière peut spécifiquement optimiser

pour améliorer l'efficacité, et la plage plus large de

peut limiter une telle optimisation. Conclusion:

d Bien qu'il soit surprenant au début, [0-9] les performances plus lentes peuvent être attribuées à sa reconnaissance d'expansion des nombres Unicode. Lorsque vous utilisez un ensemble de nombres limité (tel que 0-9), [0-9] ou d peut fournir une meilleure efficacité. Cependant, si vous devez correspondre à une gamme plus large de nombres à partir de différentes langues,

est toujours un outil puissant.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal