Obvykle se používá pozitivní dopředná tvrzení pro tento úkol, ale regex engine MySQL je nepodporuje.
Vaší jedinou možností (pokud to chcete udělat v jediném regulárním výrazu) je tedy zpracovat obě varianty (hello
po red
nebo hello
před red
) "ručně":
hello.*red|red.*hello
Pro dvě „hledaná slova“ je to pravděpodobně přijatelné – neškáluje to však pěkně.
Váš regulární výraz ((hello|red).*){2}()*
je trochu zvláštní; to znamená
( # 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...
takže toto odpovídá hello foo hello
nebo red bar red
také.