gpt4 book ai didi

MySQL RegExp 从 RegExp 获得错误 'repetition-operator operand invalid'

转载 作者:行者123 更新时间:2023-11-29 08:00:00 26 4
gpt4 key购买 nike

我的正则表达式是这样的:

((?:[a-z][a-z0-9_]*)).*?(\d+).*?((?:[a-z][a-z0-9_]*)).*?(\d+).*?([a-z])

如果我将其作为 MySQL RegExp 的输入,我会收到重复运算符错误。我知道它是由于 ?: 而发生的,我用 ^ 替换了它,并且还替换了 * ?与 [^>]* 我替换的正则表达式是这样的:

'((^[a-z][a-z0-9_]*)).[^>]*.(\\d+).[^>]*.((^[a-z][a-z0-9_]*)).[^>]*.(\\d+).[^>]*.([a-z])'

上面的表达式执行没有错误,但是匹配失败并返回错误的结果。所以我想在不失去约束的情况下将第一个正则表达式转换为mysql支持的POSIX标准。

最佳答案

所需的最重要的转换是模仿惰性量词,这在 MySQL 中不存在。为此,正如您将在解释的第 3 点中看到的,我们将使用互不兼容的表达式。

这应该可以做到:

(([a-z][a-z0-9_]*))[^0-9]*([0-9]+)[^a-z]*(([a-z][a-z0-9_]*))[^0-9]*([0-9]+)[^a-z]*([a-z])

除非您打算使用它们,否则您还可以在 ([0-9]+) 等位置(您有 (\d+)之前。)

说明

  1. 用常规组替换了(?:非捕获组
  2. \d 替换为 [0-9]
  3. 用否定字符类替换了惰性量词,该字符类否定了后面的内容,例如 [^a-z]* 位于 [a-z] 之前,而 [ ^0-9]* 位于 [0-9]
  4. 之前

关于MySQL RegExp 从 RegExp 获得错误 'repetition-operator operand invalid',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24076864/

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