Note du mod : Ne pas supprimer/ne pas fermer J'ai déjà posé cette question et l'administrateur l'a fermée car il pensait qu'elle était similaire à la question d'un autre utilisateur. J'ai regardé le fil de discussion qu'ils m'ont recommandé et il ne contenait pas le genre de problèmes numériques que j'avais. Comment ce fil fait-il correspondre une chaîne entière avec une expression régulière ?
Mes questions/problèmes : REGEXP renvoie un faux positif.
SELECT '123456' REGEXP '[0-9]{1,4}' AS Test;
D'après ma lecture, la partie accolades {1,4} signifie qu'elle apparaît au moins 1 fois et au maximum 4 fois. Mais d'après ce qui précède, la plage [0-9] apparaît plus souvent que 4, mais la requête renvoie 1 au lieu de 0. J'ai joint la capture d'écran. Qu'est-ce que je rate? Merci.
Capture d'écran d'un exemple dans Workbench
Avec « ancrage », vous demandez de faire correspondre la chaîne entière. L'opération ci-dessus échouera en raison de la limite de 4.
Réussi car il autorise au moins les chiffres.
Les deux derniers incluent
[^0-9]
, qui signifie « n'importe quel nombre sauf 0-9.Instructions détaillées^
^
将处理“锚定”在开头:REGEXP "^x"
表示“以 x 开头”;如果“x”位于字符串中的任意位置,则REGEXP "x"
réussit.^
表示“不”:REGEXP "x[0-9]"
查找 x 后紧跟一个数字'REGEXP "x[^0-9]"
recherche x et non le numéro qui le suit immédiatement.