Nous avons une table mysql avec une colonne qui a du texte alphanumérique. Nous avons un cas d'utilisation unique où nous devons trouver toutes les rangées de la table où cette colonne contient du texte contenant:
En tant que tel, celles-ci seraient ok: p> celles-ci ne seraient pas ok: p> Nous avons essayé quelque chose comme ça, mais cela ne fonctionne pas: p>
3 Réponses :
Utilisez cette réégalité pour la correspondance de modèle:
pattern = "^(S+[TACN]+S*[TACN]*)+$|^(S*[TACN]+S+[TACN]*)+$"
Ceci n'est pas cohérent. Il correspond ncsans code> mais pas
scanns code>. Cela implique que si une réapparition à un réapparaît du tout qu'il doit réapparaître au début ou à la fin de la séquence dans le même ordre que le premier match. En d'autres termes, il applique une restriction inutile sur le motif.
Pour la situation du multiple: Ce modèle fera le tour, s'il vous plaît vérifier: motif = "^ (S + [tacn] + s *) + $ | ^ (S * [tacn] + s +) + $". Mis à jour les ANS ci-dessus aussi
Cela ne parvient toujours pas à faire correspondre le cas avec S code> intégré dans une chaîne valide mais pas sur les extrémités, comme
anstc code>.
Belle prise. Mise à jour du motif de regex: motif = "^ (s + [tacn] + s * [tacn] *) + $ | ^ (tacn] + s + [tacn] *) + $"
Ceci suppose que s code> peut apparaître plusieurs fois comme les autres caractères autorisés. Les exigences n'excluent pas explicitement cette possibilité, bien que les exemples n'incluent pas un tel exemple. Je n'interprète pas "une lettre à coup sûr" de dire "apparaît une seule fois".
^(s+[tacn][stacn]*|[tacn]+s[stacn]*)$
Merci. Oui, s code> peut répéter aussi bien. Votre code ne semble pas fonctionner cependant. Il ne trouve aucun enregistrement.
Étrange, car quand je branche mon motif dans Nick's dbfiddle (la même réponse que vous avez acceptée) Je reçois précisément les mêmes résultats. Je l'ai testé et ça marche bien. Je pense que peut-être que vous n'êtes pas copié et la collant correctement. Je n'ai pas cuillère à la cuillère alimenter tous les détails comme Nick, mais cela devrait fonctionner correctement s'il est mis en œuvre correctement.
de mysql 8.0.4 à partir de MySQL 8.0.4, MYSQL REGEXP Support modifié à la bibliothèque ICU et les regards sont pris en charge. Pour ces versions, cette regex répondra à vos exigences: p> Il utilise 3 lookaheads: p> mysql avant 8,0,4 strong> p> Cette regex vous donnera les résultats que vous souhaitez: p> il cherche soit < / p> Query: p> sortie: p> Si vous souhaitez autoriser ceci modifie le résultat pour Démo sur dbfiddle P> P>
(? =. * s) code> affirme qu'il y a un
s code> dans la chaîne; li>
(? =. * [acnt]) code> affirme y a au moins l'un des
[acnt] code> dans la chaîne; LI>
(?!. * [^ acnst]) code> affirme qu'il n'y a pas de caractères autres que
[acnst] code> dans la chaîne. LI>
ol>
s code> précédé de zéro ou plus de
[tacn] code> et suivi d'un ou plusieurs de
[tacn] code>; ou li>
s code> précédé d'un ou de plusieurs
[tacn] code> et suivi de zéro ou plus de
[tacn] code> li>
ul>
s code>. qu'une fois, il suffit de changer la regex vers p>
STS code> à
1 code>, tout en laissant le résultat pour
ss code> comme
0 code> car il ne contient pas de caractère autre que
s code>. p>
Merci pour le patient et explication détaillée!
@Khomnazid aucun souci. Je suis heureux d'avoir pu aider.
À ma connaissance, des looks négatifs ne sont pas pris en charge dans MySQL, mais même si cela l'a fait, appliquer un opérateur de répétition à une construction à l'avenir de largeur zéro n'a pas de sens. La construction de look-avance n'envoie pas la position de la chaîne, afin d'appliquer plusieurs fois que plusieurs fois seraient simplement en train de tourner les roues. Même si cela soutenait le regard, il semble que ce schéma particulier soit un comportement indéfini.
Il n'est pas clair si
s code> pourrait apparaître plusieurs fois ou non. Est
scanns code> ou
nscas code> d'accord?
Sonne à moi comme
^ [tacn] * [S] [Stacn] * $ code >
@BobbleBubble qui ne satisfait pas la condition "une ou plusieurs" des autres lettres. Votre modèle correspond à une chaîne de
S code>.