Problème d'expression régulière PHP ?
阿神
阿神 2017-05-16 13:07:23
0
1
398

Lorsque j'ai utilisé des expressions régulières, j'ai découvert un phénomène très étrange, le suivant :

  • [--\ˇ]

< /p>

  • [_-\ˇ]

< /p>

  • [=-\ˇ]

< /p>

C'est-à-dire que le premier ne peut pas faire correspondre les lettres, le deuxième peut faire correspondre les lettres et le troisième peut faire correspondre les lettres et les barres obliques.

Je veux juste remplacer ces caractères spéciaux lorsqu'ils apparaissent dans la chaîne. Je ne m'attendais pas à ce que même les lettres soient remplacées. Je sais que je peux utiliser d'autres méthodes d'écriture pour répondre à cette exigence, mais je ne le fais pas. Je ne sais pas pourquoi c'est si bizarre d'écrire de cette façon. Grand Dieu Expliquons cette règle.

Putain de merde, il y en a encore, c'est tellement dur d'écrire une regex normale

  • [+-~]

  • [i-~]

  • [--~]

  • [_-~]

  • [=-~]

  • ...

Si vous êtes intéressé, essayez de le faire correspondre avec hello w\o\r\l\d.

Pourquoi cela se produit-il ?

阿神
阿神

闭关修行中......

répondre à tous(1)
我想大声告诉你

Tout d’abord, le premier exemple ne doit pas être un régulier légal, il n’y aura donc aucun résultat.

Les expressions régulières dans les deux exemples suivants sont la syntaxe [a-z] la plus basique, ce qui signifie faire correspondre tous les caractères d'un caractère à un autre encodage de caractères. [a-z] 语法,表示匹配从一个字符到另一个字符编码之间的所有字符。

两例子中,起始字符分别是 _=, 终止字符都是全角符号 ˇ
全角符号编码大于所有 ASCII 编码,所有在匹配 AscII 编码时都匹配,不用多考虑,我们查下起始字符的 ASCII 编码。

ASCII 编码中:
/ < 0-9 < = < A-Z < < _ < a-z

所以, [=-ˇ] 能匹配大写字母、反斜杠、小写字母,[_-ˇ]

Dans les deux exemples, les caractères de début sont _ et =, et les caractères de fin sont tous des symboles pleine chasse ˇ.
L'encodage des symboles pleine largeur est supérieur à tous les encodages ASCII, et tous correspondent lors de la correspondance des encodages AscII. Sans trop réfléchir, nous vérifions l'encodage ASCII du caractère de départ.

Encodage ASCII :
/ < 0-9 < code> < _ < a-z

🎜Ainsi, [=-ˇ] peut correspondre aux lettres majuscules, aux barres obliques inverses et aux lettres minuscules, et [_-ˇ] ne peut correspondre qu'aux lettres minuscules, dont aucune ne peut être correspondent. 🎜 🎜 🎜Deuxièmement, il vaut mieux ne pas écrire une expression régulière aussi étrange, car elle est difficile à maintenir. 🎜
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal