Normalt ville man bruge positive lookahead-påstande til denne opgave, men MySQL's regex-motor understøtter dem ikke.
Derfor er din eneste mulighed (hvis du vil gøre dette i et enkelt regex) at håndtere begge variationer (hello
efter red
eller hello
før red
) "manuelt":
hello.*red|red.*hello
For to "søgeord" er det nok acceptabelt - det skalerer dog ikke pænt.
Dit regex ((hello|red).*){2}()*
er lidt mærkeligt; det betyder
( # Start of group:
(hello|red) # Match either hello or red
.* # Match any number of characters
){2} # Match this group twice
()* # Match the empty string any number of times...
så dette matcher hello foo hello
eller red bar red
også.