gpt4 book ai didi

mysql - 从 Mysql 中的正则表达式得到错误 'repetition-operator operand invalid'

转载 作者:可可西里 更新时间:2023-11-01 07:56:23 30 4
gpt4 key购买 nike

我在使用正则表达式从我的 MySQL 表中选择一些结果时遇到问题。

我正在使用这个查询

select id, orderid, `desc`
from paymentlog
where `desc` REGEXP '[^.]*(?:_SVD(\d*))[[:>:]]'

它说

#1139 - Got error 'repetition-operator operand invalid' from regexp

此正则表达式适用于我的其他编辑器/验证器。

非常感谢任何建议。

最佳答案

MySQL regular expressions不支持 Perl-Compatible Regular Expressions 的完整语法.

MySQL 不支持 (?:) 分组语法。该语法用于没有反向引用的分组。但是在MySQL中无所谓,反正MySQL不支持反向引用(与此相关,MySQL没有正则表达式替换功能)。

事实上,您的示例中不需要任何括号。

正如@ruakh 所说,\d 不是匹配数字的代码。您需要在 MySQL 中使用 POSIX 字符类。

所以你的表情应该是这样的:

where `desc` REGEXP '_SVD[:digit:]*[[:>:]]' 

我也遗漏了你的 [^.]* 因为它在这个表达式中无关紧要。您没有匹配字符串的开头,因此该类的 0 个字符将匹配成功,即使您在模式的其余部分之前确实有一个 .。您可能意味着仅当字符串开头有非点字符时才匹配,如下所示:

where `desc` REGEXP '^[^.]*_SVD[:digit:]*[[:>:]]' 

关于mysql - 从 Mysql 中的正则表达式得到错误 'repetition-operator operand invalid',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22649920/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com