我有以下正则表达式:
1|2|3|4|5|6它是一个SQL部件,我只想匹配这6个ids。问题是这个正则表达式还匹配11、12、13、14、15、16、23等整数。
我如何构造正则表达式来只匹配这6个特定的整数?
发布于 2015-08-03 17:25:32
为了使用“更短”的查询,您可以使用带有REGEXP的字符类的交替
SELECT * FROM table WHERE id REGEXP '^([1-6]|23)$'字符类[1-6]匹配从1到6的数字,|用于列出其他备选字符。使用(...)进行分组使锚点^ (字符串的开头)和$ (字符串的结尾)应用于所有可能的备选方案。
如果您的is是单独传递的,并且regex是动态创建的,那么只需使用alternation:
^(23|6|5|4|3|2|1)$但是,如果您只有一小部分‘d,则最好使用OR语法列出备选方案,因为非正则表达式解决方案消耗的资源较少。
发布于 2015-08-03 17:29:19
您还可以使用:
SELECT * FROM table WHERE id IN (1,2,3,4,5,6);你为什么明确想要使用REGEXP呢? 10次中有9次有比REGEXP更好的解决方案
https://stackoverflow.com/questions/31783555
复制相似问题