MySQL REGEXP(参数顺序有问题)

MySQL REGEXP(参数顺序有问题),regex,mysql,Regex,Mysql,查询: 数据库字符串: SELECT * FROM (test) test_label WHERE REGEXP "AA(.*)BB" OR test_label REGEXP "BB(.*)AA"** 此查询返回行:1、2和3 如何: 将此表达式组合成一个表达式,但-我希望它与一个REGEXP一起使用,而不是与OR一起使用-如果可能的话,它不能按照输入变量的顺序进行,我也不必搜索所有可能的组合 现在,如果查询是AA BB,我必须找到所有可能的情况-在这种情况下,它只是: AA.BB | BB

查询:

数据库字符串:

SELECT * FROM (test) test_label WHERE REGEXP "AA(.*)BB" OR test_label REGEXP "BB(.*)AA"**
此查询返回行:1、2和3

如何:

将此表达式组合成一个表达式,但-我希望它与一个REGEXP一起使用,而不是与OR一起使用-如果可能的话,它不能按照输入变量的顺序进行,我也不必搜索所有可能的组合

现在,如果查询是AA BB,我必须找到所有可能的情况-在这种情况下,它只是:

AA.BB | BB.AA 但如果查询是AA-BB-CC,则会出现更多的情况

测试用例:

查询AA BB返回第1、2、3行。 查询BB 300仅返回第3行。 查询BB CC 100仅返回第4行。 查询BB 100返回第1,4行。 应该这样做,虽然我不明白为什么你想要捕捉AA和BB之间的空间,所以AA.*BB | BB.*AA也可以

如果可能的字符串数量增加,则取决于您希望允许哪些字符串作为有效匹配。如果你想要真正的组合,我。E列表中的所有三个元素(如AA、BB、CC)必须以任何顺序出现一次,然后MySQL使用POSIX ERE引擎,因此没有实现反向引用,您别无选择,只能详细说明所有可能的组合:

AA(.*)BB|BB(.*)AA

等等,了解更多的元素。

谢谢你的回答-但我不想寻找所有可能的组合,这就是问题所在。我不明白。你想把AA.*BB和BB.*AA这两个表达组合成一个,是吗?不是真的。我希望输入参数的顺序无关紧要。现在,如果用户在搜索框AA BB中输入,我必须找到所有可能的组合,在这种情况下,它只有2个,但如果用户输入AA BB CC DD EE,它会更多。我不知道用正则表达式构建查询是否可能,键入参数的顺序无关紧要。您能编辑您的问题,更全面地解释您真正想要的是什么吗?这些字符串是AA..EE预定义的吗?字符串的数量是预定义的吗?字符串是否可以在同一序列中出现多次,如果是,匹配是否会失败?您应该提供一个测试用例列表,精确地显示您想要和不想要匹配的内容。现在,你的要求还不明确。好吧,我想我明白了,并编辑了我的答案。不幸的是,MySQL的正则表达式引擎迫使您拼出所有可能的组合。
AA(.*)BB|BB(.*)AA
AA.*BB.*CC|AA.*CC.*BB|BB.*AA.*CC|BB.*CC.*AA|CC.*AA.*BB|CC.*BB.*AA