我试图让我的正则表达式在MySQL中工作,但它';它不工作了
我的sql数据库中存储了一个字符串我试图让我的正则表达式在MySQL中工作,但它';它不工作了,mysql,regex,Mysql,Regex,我的sql数据库中存储了一个字符串 rahul得分-[99 58 21]-分 我有它的正则表达式 ^rahul得分-\[\d{2}]*(?:99 | 58 | 21)[\d{2}]*\]-分$ 当我在Javascript中测试它时,它返回true,但如果我在MySQL中使用 SELECT * from tablexyz WHERE columnabc RLIKE '^rahul-scored-\[[ \d{2}]* (?:99|58|21) [\d{2} ]*\]-marks$' 它不返
rahul得分-[99 58 21]-分
我有它的正则表达式
^rahul得分-\[\d{2}]*(?:99 | 58 | 21)[\d{2}]*\]-分$
当我在Javascript中测试它时,它返回true,但如果我在MySQL中使用
SELECT *
from tablexyz
WHERE columnabc RLIKE '^rahul-scored-\[[ \d{2}]* (?:99|58|21) [\d{2} ]*\]-marks$'
它不返回任何行
有没有办法在不改变正则表达式的含义和意义的情况下为MySQL编写完全相同的正则表达式。我想这会满足您的要求:
WHERE columnabc RLIKE '^rahul-scored-\\[( [0-9]{2})* \\]-marks$'
是一把数字小提琴。您可以使用
REGEXP '^rahul-scored-\\[( (99|58|21))+ \\]-marks$'
看
详细信息
^rahul评分-\\[/code>-字符串开头的文本
文本rahul评分-[
-一个或多个空格的重复,然后是((99 | 58 | 21))+
、99
或58
21
-\\]-标记$
字符串]-在字符串末尾标记
- 正则表达式转义(如与文本
匹配的\[
)必须作为\[
转义,因为模式是使用字符串文本定义的\\[
- 如果使用早于8的MySQL版本,则不能使用非捕获组
[\d{2}]*
没有做您认为它是什么。请尝试“^rahul评分-\\[(*[0-9]{2})+*]-标记$'
,请参见我想这样做。我想检查给定字符串是否只包含这三个数字或其中一个。只有MySQL版本8处理该regexp语法。您使用的是哪个版本?我尝试了,但它对每两位数字都有效。我想专门检查这三个数字中是否存在任何一个.当我改变[和]到\]@VipinGautam(如上所述)时,它能工作吗?