Gewoonlijk zou men positieve vooruitziende beweringen gebruiken voor deze taak, maar de regex-engine van MySQL ondersteunt ze niet.
Daarom is je enige optie (als je dit in een enkele regex wilt doen) om beide varianten af te handelen (hello
na red
of hello
voor red
) "handmatig":
hello.*red|red.*hello
Voor twee "zoekwoorden" is dat waarschijnlijk acceptabel - het schaalt echter niet goed.
Uw regex ((hello|red).*){2}()*
is een beetje vreemd; het betekent
( # 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...
dus dit komt overeen met hello foo hello
of red bar red
ook.