Pourquoi "1A" n'est-il pas pris en compte dans la classe alphanumérique?'1A' n'est pas accepté dans [: alnum:] Classe de caractères POSIX sous Oracle regularsion
SELECT 'yes'
FROM dual
WHERE REGEXP_LIKE('1A', '[:alnum:]');
Pourquoi "1A" n'est-il pas pris en compte dans la classe alphanumérique?'1A' n'est pas accepté dans [: alnum:] Classe de caractères POSIX sous Oracle regularsion
SELECT 'yes'
FROM dual
WHERE REGEXP_LIKE('1A', '[:alnum:]');
Une paire de [...]
crée une séquence d'échappement bracket expression. Les classes de caractères POSIX, telles que [:alpha:]
, [:alnum:]
, ne peuvent être déclarées que dans une expression entre crochets.
[:digit:]
est une classe de caractère POSIX, utilisé dans une expression de support comme[x-z[:digit:]]
.
Utilisez la classe de caractères dans une expression Posix de support:
SELECT 'yes' FROM dual WHERE REGEXP_LIKE('1A', '[[:alnum:]]')
Voir un online demo.
('1a', '[:alnum:]')
semble acceptable.
Notez que lorsque vous utilisez '[:alnum:]'
, le moteur regex comme il parse expression régulière support correspondant à tous les caractères/chaînes de caractères définies dans l'expression de support. C'est à dire. le [:alnum:]
regex correspond à n'importe quel caractère qui est soit :
, a
, l
, n
, u
ou m
. Puisque votre entrée a a
(1a
) le moteur regex renvoie une correspondance valide une fois qu'il rencontre a
dans l'entrée.
D'accord merci, pouvez-vous également donner la raison pour laquelle l'utiliser devrait être dans un autre support. Comme '('1a', '[: alnum:]')' semble acceptable. –
Non, vous vous trompez, voir ma mise à jour. –