Problème : expression régulière MySQL (le limiteur ne fonctionne pas)
P粉684720851
P粉684720851 2024-04-02 23:35:21
0
1
375

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

P粉684720851
P粉684720851

répondre à tous(1)
P粉242535777
SELECT '123456' REGEXP '^[0-9]{1,4}$' AS Test;

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.

SELECT '123456' REGEXP '^[0-9]{1,}$' AS Test;

Réussi car il autorise au moins les chiffres.

SELECT 'zzz123456' REGEXP '^[0-9]{1,}$' AS Test; -- Fail
SELECT '123456' REGEXP '^[0-9]*$' AS Test;  -- pass
SELECT '' REGEXP '^[0-9]{1,}$' AS Test;  -- fail (too short)
SELECT '' REGEXP '^[0-9]+$' AS Test;  -- same as {1,}
SELECT 'abc123456def' REGEXP '[0-9]{1,4}' AS Test; -- pass (no anchor)
SELECT 'abc123456def' REGEXP '^[^0-9]+[0-9]{1,4}[^0-9]+$' AS Test;  -- fail
SELECT 'abc123456def' REGEXP '[^0-9]*[0-9]+[^0-9]*' AS Test;  -- pass

Les deux derniers incluent [^0-9], qui signifie « n'importe quel nombre sauf 0-9.

Instructions détaillées^

  • Au début de dans l'expression régulière, ^ 将处理“锚定”在开头: REGEXP "^x" 表示“以 x 开头”;如果“x”位于字符串中的任意位置,则 REGEXP "x" réussit.
  • Au début du "charset", ^ 表示“不”: REGEXP "x[0-9]" 查找 x 后紧跟一个数字' REGEXP "x[^0-9]" recherche x et non le numéro qui le suit immédiatement.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal