当前位置: 首页 > 知识库问答 >
问题:

正则表达式包含[x-y]字符范围,其中x位于y[closed]之后

邴宏大
2023-03-14

在MySQL 8.0.23中,我有一个结构如下的表:

+------------+----------+------+-----+---------+----------------+
| Field      | Type     | Null | Key | Default | Extra          |
+------------+----------+------+-----+---------+----------------+
| Id         | int(11)  | NO   | PRI | NULL    | auto_increment |
| Text       | text     | NO   |     | NULL    |                |
+------------+----------+------+-----+---------+----------------+

text字段包含类似于以下内容的标记:

Here's an inline link to a [test-page](https://www.example.com/)

我尝试运行以下查询

sql prettyprint-override">SELECT Id, REGEXP_SUBSTR('\d\d\d',Text) FROM mytable

但有个错误说

[HY000][3697] The regular expression contains an [x-y] character range where x comes after y

这个错误信息是什么意思?

共有1个答案

左丘元徽
2023-03-14

该错误通常意味着您的正则表达式语法有问题。

[A-Z]表示字母表中的任何大写字母。但不允许使用[Z-A],因为在字母表中Z位于A之前。因此,正则表达式不会运行。

在您的示例中,regexp_substr的参数顺序错误。根据https://dev.mysql.com/doc/refman/8.0/en/regexp.html文档,语法为

REGEXP_SUBSTR(expr, pat)

但你有

REGEXP_SUBSTR(pat, expr)

假设您的文本字段用于保存折扣。然后一行包含下面这样的内容

Here's an inline link to a [test-page](https://www.example.com/)

将被解释为正则表达式。[test-page]仍然是一个正则表达式范围,其中T在字母表中位于P之前。

因此数据库引擎尝试将文本字段解释为正则表达式,但失败。

 类似资料:
  • 本文向大家介绍正则表达式“ [[X?+]””元字符Java,包括了正则表达式“ [[X?+]””元字符Java的使用技巧和注意事项,需要的朋友参考一下 可能量词[X?+]匹配一次存在的X或根本不存在的X。 示例 输出结果

  • X|Y

    描述 (Description) 逻辑运算符[X|Y]匹配X或Y. 例子 (Example) 以下示例显示了逻辑运算符的用法。 package com.wenjiangs; import java.util.regex.Matcher; import java.util.regex.Pattern; public class LogicalOperatorDemo { private sta

  • 问题内容: 考虑以下示例: 我不确定Java语言规范中是否有一项规定要加载变量的先前值以便与右侧()进行比较,该变量应按照方括号内的顺序进行计算。 为什么第一个表达式求值,而第二个表达式求值?我本来希望先被评估,然后再与自身()比较并返回。 这个问题与Java表达式中子表达式的求值顺序不同,因为这里绝对不是“子表达式”。需要 加载 它以进行比较,而不是对其进行“评估”。这个问题是特定于Java的,

  • 问题内容: 几年前我有这个面试问题,但是我还没有找到答案。 做无限循环的x和y应该是什么? 我们试着用,, VS 。 问题答案: 您需要两个可比较,具有相同值但代表不同实例的变量,例如: 和都为true,因为取消了装箱,但是实例相等性为false。 请注意,它也可以与一起使用,并且任何值(不仅是0)都可以使用。 您还可以使用JVM的复杂性-它们通常仅缓存最多127个整数,因此也可以使用: (但是1

  • 这个问题与Java表达式中子表达式的求值顺序不同,因为在这里肯定不是“子表达式”。需要加载它进行比较,而不是“求值”。这个问题是特定于Java的,表达式来自一个真实的项目,而不是通常为棘手的面试问题而设计的牵强附会的不切实际的构造。它应该是比较和替换习语的一行替换 它比x86 CMPXCHG指令还要简单,因此在Java中应该使用更短的表达式。

  • Returns an SVG markup string for the blur filter Parameters xnumberamount of horizontal blur, in pixels ynumberamount of vertical blur, in pixels Returns: string filter representation Usage var f = pa