Mysql 找不到在模式内对regexp求反的方法

Mysql 找不到在模式内对regexp求反的方法,mysql,regex,Mysql,Regex,我找不到使用regexp查找包含第一个单词和第二个单词的所有匹配项的方法,但这两个单词之间的不应是特定单词 选择'66-155en application'regexp'66-155.[]en application' 应返回0 选择“66-155 en应用程序”“regexp”66-155.[]en应用程序” 在8.0之前的MySQL版本中应返回1,您不能使用单个正则表达式,因为它是基于POSIX的正则表达式,不支持lookarounds 对于MySQL的早期版本,您可以使用 LIKE '%6

我找不到使用regexp查找包含第一个单词和第二个单词的所有匹配项的方法,但这两个单词之间的不应是特定单词

选择'66-155

en application

'regexp'66-155.[]en application'

应返回0

选择“66-155 en应用程序”

“regexp”66-155.[]en应用程序”


在8.0之前的MySQL版本中应返回1

,您不能使用单个正则表达式,因为它是基于POSIX的正则表达式,不支持lookarounds

对于MySQL的早期版本,您可以使用

LIKE '%66-155%en application%' AND NOT LIKE '%66-155%<p>%en application%'
像“%66-155%en应用程序%”而不像“%66-155%en应用程序%”
如果使用正则表达式模式而不是文字子字符串,那么

REGEXP '66-155.*en application' AND NOT REGEXP '66-155.*<p>.*en application'
REGEXP'66-155.*.en application'而非REGEXP'66-155.**en application'
在MySQL 8.x中,使用ICU正则表达式引擎,可以使用基于查找的正则表达式:

REGEXP '66-155(?:(?!<p>).)*?en application'
REGEXP'66-155(?(!)*?en应用程序'

(?:(?!)*?
是一个匹配任何字符(除换行符字符外,要匹配包括换行符在内的任何字符,请在模式开头添加
(?)s
)和
,重复次数尽可能少(由于
*?
量词),这不会启动字符序列。

请尝试
选择“66-155

en application

”类似于“%66-155%en application%”,而不是“%66-155%%en application%”。
。您的MySQL版本是什么?在8.0之前的MySQL版本中,您不能使用一个正则表达式,因为它是基于POSIX的正则表达式,不支持lookarounds。@WiktorStribiżew请给我一些时间来尝试一下