MySQL expressions régulières - Partie 3Introduction Cela fait partie de ma série 3, MySQL expressions régulières. Je suppose que vous avez lu la partie précédente de la série. Ceci est la continuation. Dans cette partie de la série, nous regardons MySQL Expressions régulières Motif constructions. Dans la partie précédente de la série, nous avons vu quelques-uns modèle simple construit. Ici, nous allons regarder la table motif de constructs.
Database plus élaborée pour Illustration Nous allons utiliser la table de base de données suivante appelée Animaux, à titre d'illustration: | Nom | propriétaire | espèces | sexe | naissance | décès | + -------- + -------- + --------- + ------ + ------------ + - ----------- + | Buffy | Harold | chien | f | 1999-05-13 | NULL | | Bowser | Diane | chien | m | 1999-08-31 | 2005-07-29 | | Fluffy | Harold Taylor | cat | f | 2003-02-04 | NULL | | Timtim | Gwen Jones | cat | m | 2004-03-17 | NULL | | Whistler | Gwin | bir5d | NULL | 2007-12-09 | NULL | Les données dans ce tableau est légèrement différent de celui dans le tableau de la partie précédente de la série.
Vous devriez tester les instructions SELECT indiquées ci-dessous à cette table de (abc) Construire Ici, (abc) signifie simplement un, deux, trois, caractères quatre, cinq, etc. entre parenthèses. Dans un motif, entre parenthèses, les caractères du groupe dans un ensemble. Le jeu de caractères dans le modèle se comporte comme un seul caractère et les caractères spéciaux que nous avons vu dans la partie précédente de la série, peut être appliqué sur eux comme si elles étaient un seul caractère. Par exemple, vous pouvez avoir quelque chose comme, (ab) +, (abc) *, (abcd) ?, etc.
L'instruction SELECT suivante retourne la quatrième ligne du tableau ci-dessus, correspondant à la quatrième valeur de la cellule, "Timtim" de la première colonne: SELECT * FROM animaux domestiques où nom RLIKE "(Tim) +"; Le motif est, "(Tim) +". Le motif correspond à une ou plusieurs (TIM) dans un sujet. Le sujet adapté est, "Timtim"; il ya deux (TIM) dans le sujet. Si le motif était, "(Tim) *", toutes les valeurs de cellule de la première colonne aurait adapté, parce que, * signifie zéro ou plus (alors que + signifie un ou plusieurs) .
Le [[::]] construit un mot est une séquence de caractères de texte qui ne soit pas précédé ou suivi de caractères de mot. Un caractère de mot est un caractère alphanumérique ou un trait de soulignement, _. Des exemples de caractères de mots sont: «a», «b», «c», «1», «2», «3», etc. marqueur, [[::]] dans un modèle correspond à la fin d'un mot . Ces constructions sont des marqueurs de limite de mot. Ils ne sont pas des caractères; ils sont des identificateurs aux limites.
L'instruction SELECT suivante retourne la quatrième ligne du tableau ci-dessus, correspondant à "Gwen" dans le sujet, "Gwen Jones" de la quatrième cellule dans la deuxième colonne: SELECT * FROM animaux domestiques où le propriétaire RLIKE "Gwen [[:>:]] »; Le motif est, "Gwen [[:>:]]». Il commence par le mot, "Gwen" suivi par le marqueur de fin de mot, [[:>:]]. Donc, il correspond à "Gwen" et sa fin dans le sujet, "Gwen Jones". Dans le sujet, après le mot, "Gwen", vous avez un mot-frontière avant le caractère de l'espace.
Le [[: Notez que chaque marqueur de mot-frontière a deux paires de crochets opposés, deux deux-points et un character.The [a-DX] et [^ a-DX] construit le caractère spécial de point correspond à un seul caractère. Qu'en est-il le cas lorsque vous voulez faire correspondre un caractère unique à partir d'un ensemble de caractères? Considérez les mots, "Gwen", "Gwin", "Gwan" et "Gw4n". Les mots diffèrent dans le caractère à la troisième position.
Le premier mot a «e» dans la troisième position; le deuxième mot a «i» dans la troisième position; le troisième mot a 'a' dans la troisième position; et le quatrième mot a '4' à la troisième position. Ainsi, vous pouvez être intéressé de faire correspondre les caractères, «e», «je», «a» et «4». Cela signifie que vous voulez faire correspondre un caractère du jeu, [eia4]. Le modèle pour ce cas est, "[eia4]", ce qui correspondrait à un seul caractère à une position dans un sujet qui est, «e» ou «i» ou «a» ou «4».
L'instruction SELECT suivante retourne les quatrième et cinquième lignes du tableau ci-dessus, correspondant à "Gwen Jones" dans la quatrième cellule et "Gwin" dans la cinquième cellule, le tout dans la deuxième colonne. SELECT * from Animaux où le propriétaire RLIKE "Gw [eia4] n"; Le motif de la déclaration est, "Gw [eia4] n". Les sujets sont "Gwen Jones» et «Gwin". Le mot impliqué dans les sujets, est "Gwen" pour "Gwen Jones» et «Gwin" pour "Gwin". "Gwen" et "Gwin" diffèrent en troisième position des personnages.
Donc, dans le sujet, "Gwen Jones», «e» dans «Gwen» est adaptée et dans le sujet, "Gwin», «i» est adaptée. «e» et «i» sont en troisième position des mots, "Gwen" et "Gwin" respectivement. Dans le modèle, "Gw [eia4] n", [eia4] est dans la troisième position. Note: [eia4] et (eia4) signifie des choses différentes. [eia4] des moyens de 'e' ou 'i' ou 'a' ou '4'; while (eia4) signifie traiter l'ensemble des personnages, "eia4", comme un seul character.Ranges [eia4] d'en haut est un exemple d'une classe.
Qu'en est-il le cas où vous souhaitez un match de la classe, [abcde]? Notez que ceci est une gamme de caractères de l'alphabet de 'A' à 'e'. [abcde] est mieux écrit, [a-e]. Notez l'utilisation du trait d'union. Vous pouvez combiner une gamme de personnages uniques. Par exemple, [a-DX] signifie «a» ou «b» ou «c» ou «d» ou «X», qui est, la gamme X. annonce et vous pouvez aussi avoir une gamme avec des chiffres, par exemple [0-5], [3-9], [0-9] Nier la classe Si vous voulez faire correspondre un caractère à une position dans le sujet sauf ceux de la classe, vous devrez alors utiliser le symbole ^.
Donc, si vous voulez faire correspondre à tout caractère sauf ceux de [a-DX], vous devez taper [^ a-DX] dans le motif. Notez l'utilisation et la position de ^ dans la construction de la classe. L'instruction SELECT suivante retourne les première et deuxième rangées, correspondant, «chien» dans les première et deuxième cellules de la troisième colon: SELECT * FROM animaux domestiques où les espèces RLIKE "d [^ une] g"; Le motif de la déclaration est «d [^ une] g" ce qui signifie qu'aucun caractère de la plage, une, doit être adapté à la position en question.
Le motif de correspondance, commence par «d», suivi d'un caractère qui ne fait pas dans la gamme, un, puis suivi par 'g'. 'o' est pas dans la plage, donc "chien" est Classes de personnages matched.Formal Certaines classes sont si importants qu'ils ont des noms. La liste suivante donne les noms de ces classes et leurs descriptions: Nom: La description alnum: caractères alphanumériques alpha: caractères alphabétiques vierge: Les caractères blancs cntrl: Les caractères de contrôle chiffres: caractères numériques graphique: caractères graphiques inférieurs: minuscules caractères alphabétiques impression: graphique ou l'espace caractères punct: caractères de ponctuation espace: espace, tabulation, nouvelle ligne, et le retour de chariot supérieur: caractères alphabétiques majuscules xdigit: caractères hexadécimaux Pour utiliser l'une de ces classes, vous utilisez la construction de marqueur, [[: nom:]].
L'instruction SELECT suivante retourne la dernière ligne de la table correspondant "bir5d" pour le chiffre, 5, dans la cinquième cellule de la troisième colonne: SELECT * FROM animaux domestiques où les espèces RLIKE "bir [[: digit:]] d"; Le motif est, "bir [[: digit:]] d". Donc, le sujet "bir5d", ayant le chiffre, 5, à la quatrième position est adaptée. [[: digit:]] est à la quatrième position du motif, "bir [[: digit:]] d" .Les x {m}, {x m,} et {x m, n} Construit Soit m et n être des entiers (nombres entiers). x {m} dans un modèle correspond exactement à m instances consécutives de x.
x {m,} correspond au moins M cas consécutifs de x. x {m, n} correspond entre m et n instances consécutives de x. Nous attendons maintenant à quelques exemples. Le motif, «fe {1} d", correspond à l'objet «Fed», où «e» est adaptée exactement un temps. Le motif, «fe {1,} D", adapté au sujet, «Fed» et le sujet, "alimentation", où «e» est adapté au moins une fois. Le motif, «fe {1,2} d", adapté au sujet, «Fed» et le sujet, "alimentation", où «e» est adapté au moins une fois et au plus 2 fois.
Les constructions ne sont pas seulement utilisés pour un personnage; ils peuvent également être utilisés pour un atome (pièce du motif). Donc, le modèle, «un [BCD] {3} e" correspond à l'objet, "abcde". Le motif, «un [BCD] {3,} e" correspond à l'objet, "abcde". Le motif, «un [BCD] {1,10} e" correspond à l'objet, "abcde". L'atome est [BCD]. Maintenant, [BCD] signifie «b» ou «c» ou «d». Ainsi, le sous-motif "[BCD] {3)», signifie «bbb» ou «CCC» ou «DDD» ou «BCB» ou «CBC» ou «DCD» ou «BDB» ou «CDC» ou «DBD» . Le sous-motif [bcd] {3} désigne une combinaison d'au moins l'un des trois caractères.
Le sous-motif, [BCD] {1,10}, signifie au moins un caractère des trois personnages, à une combinaison de 10 caractères de 3 characters.White caractères blancs littéraux de caractères de l'espace sont: 'b', 't »,« n »,« v »,« f »et« r ». Les noms de ces littéraux sont respectivement, retour arrière, tabulation, nouvelle ligne, vertical-onglet, sous forme d'alimentation et de retour chariot. Vous pouvez utiliser les littéraux de caractères blancs, directement dans le motif.
Supposons que vous aviez la ligne suivante ajoutée au tableau: | Lion | Peter | finsh | f | 2008-12-09 | NULL | La cellule pour les espèces a la valeur, "finsh", avec le caractère de nouvelle ligne, 'n'. L'instruction SELECT suivante retourne la ligne, correspondant à l'objet, "finsh". SELECT * from Animaux où les espèces RLIKE "finsh"; Le motif est, "finsh". Vous pouvez également utiliser le nom du caractère d'espace blanc, mais dans ce cas, vous aurez à le placer dans le marqueur, [[.name.]]. L'instruction SELECT suivante retourne la ligne ajoutée, correspondant à l'objet, "finsh".
SELECT * from Animaux où les espèces RLIKE "fi sh [[saut de ligne]..]"; Le motif est, "fi [[. Saut de ligne.]] Sh". Vous pouvez utiliser le littéral dans le marqueur. L'instruction SELECT suivante retourne la ligne ajoutée, correspondant à l'objet, "finsh". SELECT * from Animaux où les espèces RLIKE "fi sh [[n]..]"; Le motif est, "fi [[. N.]] Sh" Le marqueur a deux paires de crochets opposés et deux dots.The MySQL expressions régulières Métacaractères Un métacaractère est un caractère utilisé pour contrôler ou définir d'autres caractères.
Dans le cas de modèles, les méta-caractères MySQL Expressions régulières sont: ^ $. * +? | * {} []: =>