首页 >数据库 >mysql教程 >为什么我的 MySQL REGEXP 查询失败并显示'重复运算符操作数无效”?

为什么我的 MySQL REGEXP 查询失败并显示'重复运算符操作数无效”?

Barbara Streisand
Barbara Streisand原创
2024-11-26 15:54:11665浏览

Why Does My MySQL REGEXP Query Fail with

正则表达式失败:“重复运算符操作数无效”

尝试执行以下 MySQL 查询时:

SELECT text 
FROM `articles` 
WHERE content REGEXP '.*<img.*?src=\"http://www' 
ORDER BY date DESC

您遇到错误:#1139 - 从正则表达式中收到错误“重复运算符操作数无效”。尽管正则表达式在 Notepad 中正常运行,但 MySQL 拒绝了它。

理解问题:POSIX 与 PCRE

MySQL 正则表达式引擎遵循 POSIX 1003.2,缺乏对问号的支持(?) 作为量词中的非贪婪修饰符( 和 )。因此,您不能雇用?和 ?

解决方案:使用贪婪量词

要解决此问题,请使用量词的贪婪版本,它仍然足以满足您的预期目的。尽管如此,为了防止不必要的元素匹配,例如:

<img>

合并否定字符类,如下所示:

'<img[^>]*src="http://www'

请记住, " 字符不需要转义,并且 .*开头是隐含的。

以上是为什么我的 MySQL REGEXP 查询失败并显示'重复运算符操作数无效”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn