当前位置: 首页 > 面试题库 >

#1139-从正则表达式中得到错误“重复运算符操作数无效”

巫欣荣
2023-03-14
问题内容

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

我正在使用此查询

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

它说

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

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


问题答案:

根据MySQL手册

MySQL使用Henry Spencer的正则表达式实现,旨在实现POSIX 1003.2

POSIX正则表达式不支持将问号?用作星形的非贪婪(惰性)修饰符,以及PCRE(与Perl兼容的正则表达式)之类的量词。这意味着您不能使用+?*?

看起来您只需要使用贪婪的版本,该版本仍然可以使用。为了避免类似的匹配<img style="/*some style*/" src="a.png"> <script src="www.example.com/js/abc.js">,可以使用否定的字符类:

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

注意:"不必转义,并且.*暗指开头。



 类似资料:
  • 下面是我正在使用的正则表达式的最新版本,它抛出了错误“Invalid regular expression” XSD:正则表达式在位置4验证失败:当前选项设置不支持此表达式。 我在xsd文件中得到了这个异常,我正在message broker(IIB)中开发这个xsd。有谁能帮我解决这个问题吗?

  • 我试图用正则表达式(RE)解析一个大样本的文本文件。我正在尝试从这些文件中提取包含< i>'vu'并以换行符结束的文本部分。 模式因文件而异,因此我尝试使用 OR 运算符在文件中查找 RE 的组合。但是,我没有找到一种方法来自动化我的代码,以便 re.findall() 函数查找 RE 的组合。 下面是我试图解决这个问题的一个例子,但显然我仍然无法计算re.findall()中的正则表达式和OR运

  • 问题内容: 正则表达式中是否存在NOT运算符?就像在那个字符串中一样: 我想删除所有但不是一年的:。 因此,正则表达式应返回的内容必须是:。 注意:类似的东西对我不起作用(某种程度上也匹配…) 问题答案: 不,没有直接的非运算符。至少不是您希望的方式。 您可以使用零宽度的负前瞻,但是: 该部分的意思是“仅在 以下 文本(因此:前瞻)与此(因此:否定) 不 匹配时才匹配。但是它实际上并不会 消耗 其

  • 问题内容: 这可能是一个愚蠢的问题,但我在任何地方都找不到: 如何在不带括号的情况下使用Java OR正则表达式运算符(|)? 例如:电话|电话|传真 问题答案: 您可以单独使用管道: 例如: 输出: 使用括号的主要原因是要限制替代方法的范围: 具有相同的输出。但是,如果您只是这样做: 你得到: 因为您说过“ string1”或“ 2”。 如果您不想捕获表达式的那一部分,请使用:

  • let formulaStr = ""; formulaStr这个是带数字符号的字符串 正则表达式无法满足 加减乘除小括号嵌套使用,该表达式只能满足单层小括号 百度搜索很多无法满足

  • 正则表达式从左到右进行计算,并遵循优先级顺序,这与算术表达式非常类似。 相同优先级的从左到右进行运算,不同优先级的运算先高后低。下表从最高到最低说明了各种正则表达式运算符的优先级顺序: 运算符 描述 \ 转义符 (), (?:), (?=), [] 圆括号和方括号 *, +, ?, {n}, {n,}, {n,m} 限定符 ^, $, \任何元字符、任何字符 定位点和序列(即:位置和顺序) | 替