Y a-t-il une priorité d'opérateur dans l'expression régulière d'Oracle sans parenthèses?Priorité de l'opérateur dans l'expression régulière
Disons que H|ha+
, serait-il H/h
d'abord, ou H/ha
, quand est-ce le coup de pied dans +
, etc.?
Y a-t-il une priorité d'opérateur dans l'expression régulière d'Oracle sans parenthèses?Priorité de l'opérateur dans l'expression régulière
Disons que H|ha+
, serait-il H/h
d'abord, ou H/ha
, quand est-ce le coup de pied dans +
, etc.?
Compte tenu de la oracle doc:
Tableau 4-2 répertorie la liste des méta-caractères pris en charge pour une utilisation dans les expressions régulières transmises à SQL fonctions d'expressions régulières et les conditions. Ces méta-caractères sont conformes à la norme POSIX; toute différence de comportement par rapport à la norme est notée dans la colonne "Description".
Et jeter un oeil à la valeur |
dans le tableau:
L'expression a | b correspond à caractère ou un caractère b.
Jeter un oeil à la posix doc:
priorité de l'opérateur L'ordre de priorité pour les opérateurs est la suivante:
symboles de support liés nom_classement [==] [ ::] [..]
Caractères évasés \
jeu de caractères (expression entre crochets) []
groupement()
duplication à caractère unique-ERE * +? {M, n}
Enchaînement
^Ancrages
$Alternance |
Je dirais donc que H|ha+
serait le même que (?:H|ha+)
: en (? ...) n'est pas la syntaxe Oracle. – mathguy
@mathguy Je suis d'accord mais je voulais montrer que ce n'est pas la même chose que '(H | ha +)' parce qu'il n'y avait pas de groupe de capture –
Comme l'a montré Thomas, l'alternance (l'opérateur |) a la priorité la plus basse. Une recherche d'expression rationnelle avec H | ha + essayera d'abord avec H, et seulement si elle ne trouve pas de correspondance (après avoir essayé toutes les combinaisons indiquées par d'autres opérateurs), elle essaiera de nouveau avec ha + au lieu de H. Le + est un opérateur unaire, il s'attache à un seul et la gourmandise s'applique. – mathguy