Mysql 搜索项前面或后面不带[a-z]和[a-z]的正则表达式

Mysql 搜索项前面或后面不带[a-z]和[a-z]的正则表达式,mysql,regex,Mysql,Regex,是否有人能为我提供一个regex来匹配搜索词,搜索词前面没有,后面没有[a-z]和[a-z]?(其他字符可以)也就是说,当搜索键时,我不想在搜索结果中使用键盘,但键是可以的。如果您使用的是Perl,您需要的是\b,也称为“单词边界”: \bkey\b应该做你想做的事 \b是一个单词边界因为您没有指定要使用的正则表达式引擎,我将假设一个基线,在这种情况下,“[^a-Za-z]键[^a-Za-z]”就足够了 如果您还想捕获行的开头和结尾的字符串,您还必须使用“^key[^A-Aa-z]”和“[^A-

是否有人能为我提供一个regex来匹配搜索词,搜索词前面没有,后面没有
[a-z]
[a-z]
?(其他字符可以)也就是说,当搜索
键时,我不想在搜索结果中使用
键盘
,但
是可以的。

如果您使用的是Perl,您需要的是
\b
,也称为“单词边界”:


\bkey\b
应该做你想做的事


\b
是一个单词边界

因为您没有指定要使用的正则表达式引擎,我将假设一个基线,在这种情况下,“
[^a-Za-z]键[^a-Za-z]
”就足够了


如果您还想捕获行的开头和结尾的字符串,您还必须使用“
^key[^A-Aa-z]
”和“
[^A-Aa-z]key$

或更简洁的
[^\w]key[^\w]
,因为这个问题带有标记,我假设您使用的是MySQL regexp。然后
[[[::]]
就是你想要的。有关详细信息,请参见。

如果您这样做,则无需使用
s:

(^|[^A-Za-z])key([^A-Za-z]|$)

我将在mysql查询中使用它。这是mysql查询中使用的解决方案:其中列REGEXP“[^a-Za-z]key[^a-Za-z]”,单词boundary\b在mysql中不起作用。谢谢非常感谢-我从你的问题中没有意识到你指的是mysql。现在你所需要做的就是接受答案:-)。不过有一个问题。现在,在键之前应该有一个字符。如果my列的值以key开头,则正则表达式找不到它。如何使其成为可选的?根据Anders链接到的MySQL文档,单词边界与
[[::]
(单词末尾)匹配。@Overbeeke:您可能需要使用我提供的三个正则表达式,在列REGEXP'regex1'或列REGEXP'regex2'或列REGEXP'regex3'中执行操作-第二个匹配开始处的键,第三个匹配在结尾。这会找到“word”还是“word4”?下划线和数字是单词边界吗+1或Pax Diablo的答案,完全按照要求回答问题。注意,通过在“键”之前和之后要求非单词字符,这将与行的开头或结尾的“键”不匹配。(缺少字符不是非单词字符。)
(^|[^A-Za-z])key([^A-Za-z]|$)