首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >#1139 -从regexp获取错误‘regexp operator operand invalid’

#1139 -从regexp获取错误‘regexp operator operand invalid’
EN

Stack Overflow用户
提问于 2013-08-19 23:08:12
回答 2查看 38.5K关注 0票数 27

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

我正在使用这个查询

代码语言:javascript
复制
SELECT text 
FROM `articles` 
WHERE content REGEXP '.*<img.*?src=\"http://www' 
ORDER BY date DESC

上面写着

代码语言:javascript
复制
#1139 - Got error 'repetition-operator operand invalid' from regexp

我用Notepad++测试了正则表达式,它可以工作,为什么MySQL会给我这个错误,我该如何修复它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-19 23:32:24

根据MySQL manual的说法

MySQL使用Henry Spencer的正则表达式实现,旨在与POSIX 1003.2保持一致

POSIX regexes不支持使用问号?作为星号的非贪婪(惰性)修饰符,也不支持像PCRE (Perl兼容正则表达式)这样的加量词。这意味着您不能使用+?*?

看起来你只需要使用贪婪的版本,它应该仍然可以工作。为了避免像<img style="/*some style*/" src="a.png"> <script src="www.example.com/js/abc.js">这样的匹配,你可以使用一个被否定的字符类:

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

注意:"不必转义,开头的.*是隐含的。

票数 57
EN

Stack Overflow用户

发布于 2013-08-20 00:17:25

你可以试一试

代码语言:javascript
复制
SELECT 
        text 
        , 
     IF (content LIKE '%<img src="http://%', text  , content LIKE '%<img style=%') 
as imageText

FROM    articles ORDER BY date DESC

这将首先检查内容在哪里有<img src="http://,如果找不到,它将转而查找<img style=

希望能有所帮助。

检查小提琴:http://sqlfiddle.com/#!2/6a2f0/13/0

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18317183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档