2017-03-15 4 views
0

Wollen Sie eine Regex, doppelte Zeichen in einem Wort zu finden, die ich in MYSQL verwenden muss.Regex, um doppeltes Zeichen in einem Wort zu erhalten

Ich habe versucht /([a-zA-Z])\1/ Aber das kehrt nur zurück, wenn es dauerndes Vorkommen hat. Habe auch viel mehr Regex ausprobiert.

Beispiel ::

fizz 
zoos 
java 
lava 
exec 
epee 

sollten diese Worte mit regex

Aber

jamb 
chez 
some 
late 

Diese abgestimmt werden sollte nicht.

Jede Referenz wird hilfreich sein.

Bitte beachten Sie: Diese Frage in kein Duplikat von this question, weil das mit der Gruppierung beschäftigt ist, aber ich möchte alle doppelten Zeichen erhalten. Außerdem gibts dort die Antwort "nicht möglich" aber @ tim-biegeleisen hat mir eine richtige Lösung in meiner Frage gegeben.

+0

MySQL Regex unterstützt keine Pattern-Backreferences. –

+0

Eigentlich habe ich das in PHP zu Testzwecken probiert. Wenn Erfolg dann würde ich es zu mysql –

+0

hinzufügen Was meinst du? PHP regex in 'preg_' Funktionen ist PCRE, und MySQL verwendet eine ganz andere Regex-Geschmack. –

Antwort

1

Wenn Sie auf OK mit hässlich aufgeblähten Abfragen sind, dann Sie können verwenden REGEXP Betreibers MySQL:

SELECT * 
FROM yourTable 
WHERE word REGEXP 'a.*a|b.*b|c.*c|d.*d|e.*e|f.*f|g.*g|h.*h|i.*i|j.*j|k.*k|l.*l|m.*m|n.*n|o.*o|p.*p|q.*q|r.*r|s.*s|t.*t|u.*u|v.*v|w.*w|x.*x|y.*y|z.*z'; 

Ausgang:

enter image description here

Demo hier:

Rextester

+0

Danke für Ihre Antwort. Es funktioniert gut. Aber gibt es eine Möglichkeit, es mit regulärer Ausdrucksweise zu tun? Weil ich es A, B, C ... auch hinzufügen muss. –

+0

Leider, wie @Wiktor oben erwähnt, MySQL Regex-Fähigkeit ist begrenzt. Der beste Weg, um dies mit Regex zu lösen, wäre eine Backreference-Prüfung für jedes Zeichen, aber MySQL unterstützt dies nicht. –

+1

Ihre Optionen umfassen die Handhabung in PHP, das Erstellen einer benutzerdefinierten Funktion in MySQL oder das Erweitern meiner Antwort (und möglicherweise auch anderer Dinge). –

Verwandte Themen