Cet article organise les métacaractères des expressions régulières C#. Les expressions régulières sont des expressions composées de caractères. Chaque caractère représente une règle. Les caractères de l'expression sont divisés en deux types : les caractères ordinaires et les métacaractères. Les caractères ordinaires font référence à des caractères dont la signification littérale reste inchangée et correspondent au texte de manière exacte, tandis que les métacaractères ont des significations spéciales et représentent un type de caractère. Considérez le texte comme un flux de caractères, chaque caractère étant placé à une position. Par exemple, dans l'expression régulière "Roomddd", les quatre premiers caractères Room sont des caractères ordinaires. . Le caractère suivant est un caractère d'échappement et forme un métacaractère d avec le caractère suivant d, indiquant qu'il y a un nombre à cette position. Décrit dans le langage des expressions régulières : l'expression régulière "Roomddd" capture un total de 7 caractères, ce qui signifie "commençant par Room et se terminant par trois chiffres" Un type de chaîne, nous appelons ce type de chaîne un motif (Pattern), également appelé motif régulier. 1. Caractères d'échappement Les caractères d'échappement sont utilisés pour échapper des caractères ordinaires en métacaractères avec des significations spéciales. Les caractères d'échappement couramment utilisés sont les caractères de signification. : t : caractère de tabulation horizontale v : caractère de tabulation verticale r : retour chariot n : Saut de ligne \ : Représente un caractère, c'est-à-dire échappe le caractère échappé en un caractère normal " : Représente le caractère ", en C#, guillemets doubles sont utilisés pour définir des chaînes. Les guillemets doubles contenus dans une chaîne sont représentés par " 🎜>Lors d'une correspondance régulière, le texte saisi est considéré comme un flux de caractères séquencés. Le métacaractère de la classe de caractères correspond à l'objet et capture le caractère. Les soi-disant caractères capturés signifient que les caractères capturés par un métacaractère ne seront pas mis en correspondance par d'autres métacaractères, et les métacaractères suivants ne peuvent être réapparus qu'à partir du texte restant. Métacaractères de classe de caractères couramment utilisés : : correspond à n'importe quel caractère du groupe de caractères : correspond à l'exception du groupe de caractères N'importe quel caractère de : correspond à n'importe quel caractère de la plage de caractères, du premier au dernier, et la plage de caractères inclut le premier et le dernier. [ char_group] : caractère générique, correspond à n'importe quel caractère sauf n [^char_group] : correspond à n'importe quel caractère de mot, les caractères de mot font généralement référence à A-Z, a-z et 0 -9 [first-last] : correspond à tout caractère autre qu'un mot, qui fait référence à des caractères sauf A-Z, a-z et 0-9 . : correspond à tout caractère d'espacement w : correspond à tout caractère non -caractère d'espacement W : correspond à n'importe quel caractère numérique s : correspond à tout caractère non numérique SNotez que les caractères d'échappement appartiennent également au caractère les métacaractères de classe et les caractères seront également capturés lors de l'exécution d'une correspondance régulière. d3. Localisateur D L'objet correspondant (ou capturé) par le localisateur est la position, qui détermine si le motif correspond en fonction de la position. du personnage Avec succès, le localisateur ne capturera pas les caractères et a une largeur nulle (la largeur est 0). Les localisateurs couramment utilisés sont : : Par défaut, la position de départ de la correspondance. string; in En mode multi-ligne, correspond à la position de départ de chaque ligne ; : Par défaut, correspond à la position de fin de la chaîne, ou à la position avant n à la fin de la chaîne ; en mode multi-ligne, faites correspondre La position avant la fin de chaque ligne, ou la position avant n à la fin de chaque ligne. : correspond à la position de départ de la chaîne ; ^ : correspond à la position de fin de la chaîne, ou à la position avant n à la fin de la chaîne : correspond à la position de fin de la chaîne $ : correspond à la position de fin du match précédent A : correspond au début ou à la fin ; position d'un mot; Z : Correspond à la position médiane d'un mot z G bQuatre, quantificateurs , cupidité et paresse B Le quantificateur fait référence à la limitation du nombre d'occurrences d'une expression régulière précédente. Les quantificateurs sont divisés en deux modes : le mode gourmand et le mode paresseux font référence à la correspondance d'un maximum d'occurrences. caractères autant que possible, tandis que le mode paresseux fait référence à faire correspondre le moins de caractères possible. Par défaut, les quantificateurs sont en mode gourmand. Ajoutez ? après le quantificateur pour activer le mode paresseux. * : apparaît 0 ou plusieurs fois + : apparaît 1 ou plusieurs fois ? : apparaît 0 ou 1 fois {n} : apparaît n fois {n,} : apparaît au moins n fois {n,m} : apparaît n à m fois Remarque, apparaît plusieurs fois signifie que le métacaractère précédent apparaît plusieurs fois. Par exemple, d{2} est équivalent à dd, seuls deux nombres apparaissent et il n'est pas nécessaire que les deux nombres soient identiques. Pour représenter les deux mêmes nombres, il faut utiliser le regroupement. 5. Regroupement et capture de caractères () Les parenthèses ne déterminent pas seulement la portée de l'expression. , mais aussi Pour créer un groupe, l'expression dans () est un groupe, et le groupe de référence signifie que le texte correspondant par les deux groupes est exactement le même. La syntaxe de base pour définir un regroupement : (motif) Ce type de regroupement capturera des caractères. Les caractères dits de capture font référence. to : un élément Les caractères capturés par les caractères ne seront pas mis en correspondance par d'autres métacaractères, et les métacaractères suivants ne peuvent être recomposés qu'à partir du texte restant. 1, numéro de groupe et dénomination Par défaut, chaque groupe se voit automatiquement attribuer un numéro de groupe, les règles sont : de gauche à droite, selon la parenthèse gauche du groupe Ils sont numérotés dans l'ordre dans lequel ils apparaissent. Le premier groupe a un numéro de groupe de 1, le deuxième groupe a un numéro de groupe de 2, et ainsi de suite. Vous pouvez également spécifier un nom pour le groupe. Ce groupe est appelé groupe nommé. Le groupe nommé sera également automatiquement numéroté. Le numéro commence par 1 et augmente de 1. La syntaxe pour spécifier un nom pour le groupe est la suivante. : (?< nom > modèle) De manière générale, les groupes sont divisés en noms groupes et groupes numérotés. Les façons de référencer les groupes sont : Référencer le groupe par nom de groupe : k Référencer le groupe par numéro de groupe : numéro Notez que les groupes ne peuvent être référencés qu'à l'envers, c'est-à-dire qu'en partant de la gauche du texte de l'expression régulière, le regroupement doit être défini avant de pouvoir être référencé ultérieurement. La syntaxe pour référencer les groupes dans les expressions régulières est "nombre". Par exemple, "1" représente le groupe correspondant à la sous-chaîne 1, "2" représente le groupe correspondant à la chaîne 2, et ainsi de suite. Par exemple, "<(.*?)>.*?1>" peut correspondre à valid. le groupe est exactement le même. 2, constructeur de groupe La méthode de construction de groupe est la suivante : (pattern) : Capturez la sous-expression correspondante et le regroupement est attribué un numéro de groupe (?< name > pattern):把匹配的子表达式捕获到命名的分组中 (?:pattern):非捕获的分组,并未分组分配一个组号 (?> pattern):贪婪分组 3, regroupement gourmand Le regroupement gourmand est également appelé regroupement sans retour en arrière. Ce regroupement désactive le retour en arrière et le moteur d'expression régulière fera correspondre autant de caractères que possible dans le texte saisi. Si aucune autre correspondance ne peut être effectuée, il n'est pas possible de revenir en arrière pour essayer des correspondances de modèles supplémentaires. (?> motif) 4, choisissez l'un des deux | moyens ou, faites correspondre Pour l’un ou l’autre des deux, notez que | divise les expressions des côtés gauche et droit en deux parties. pattern1 | pattern2 Six, assertion de largeur nulle La largeur nulle signifie que la largeur est 0 et que la correspondance est la position, donc la correspondance La sous-chaîne n'apparaîtra pas dans le résultat de la correspondance et l'assertion fait référence au résultat du jugement. Ce n'est que lorsque l'assertion est vraie que la correspondance peut être considérée comme réussie. Pour les localisateurs, vous pouvez faire correspondre le début et la fin d'une phrase (^ $) ou le début et la fin d'un mot (b). Ces métacaractères ne correspondent qu'à une seule position, et spécifier cette position. satisfait un certain Les conditions correspondent à la place à certains caractères, elles sont donc appelées assertions de largeur nulle. La soi-disant largeur nulle signifie qu'ils ne correspondent à aucun caractère, mais correspondent à une position ; la soi-disant assertion fait référence à un jugement, et l'expression régulière continuera à correspondre uniquement lorsque l'assertion est vraie. Les assertions de largeur nulle peuvent correspondre à une position exacte, plutôt que de simplement spécifier une phrase ou un mot. Les expressions régulières traitent le texte comme un flux de caractères de gauche à droite. La droite est appelée en arrière (Regarder derrière) et la gauche est appelée en avant (Regarder devant). Pour les expressions régulières, uniquement lorsque le modèle spécifié (Pattern) correspond, l'assertion est True, ce qu'on appelle une expression positive, et le modèle sans correspondance est True, ce qu'on appelle une expression négative. Les assertions de largeur nulle sont divisées en quatre types selon le sens de correspondance et la nature qualitative de la correspondance : (?= 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教程