Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL正则表达式的困境_Mysql_Sql_Regex - Fatal编程技术网

MySQL正则表达式的困境

MySQL正则表达式的困境,mysql,sql,regex,Mysql,Sql,Regex,MySQL决定不使用我编写的某个正则表达式。宏伟的计划是让它匹配一个字符串,该字符串可能以标点符号结尾,也可能不以标点符号结尾 我已将以下内容输入到2个旨在验证正则表达式的应用程序中,在这两种情况下,该表达式都能完美地工作: \bString\b[[:punct:]]? 但在MySQL作为 [[:<:]]String[[:>:]][[:punct:]]? [[::][[:点击:]]? 那就根本不起作用了。它将接受字符串,但不接受字符串!或字符串 我已经穷途末路了,如果有人能解

MySQL决定不使用我编写的某个正则表达式。宏伟的计划是让它匹配一个字符串,该字符串可能以标点符号结尾,也可能不以标点符号结尾

我已将以下内容输入到2个旨在验证正则表达式的应用程序中,在这两种情况下,该表达式都能完美地工作:

\bString\b[[:punct:]]?
但在MySQL作为

[[:<:]]String[[:>:]][[:punct:]]? 
[[::][[:点击:]]?
那就根本不起作用了。它将接受字符串,但不接受字符串!或字符串

我已经穷途末路了,如果有人能解释一下,我将不胜感激


TIA:-)

[[[:>:]]
表示词尾。通常是一个空间

字符串
(注意空格)匹配。
String不匹配

将正则表达式更改为:

[[:<:]]String[[:>:]]{0,1}[[:punct:]]{0,1} 
[[::]{0,1}[[:punct:]{0,1}

[[[:>:]]
表示单词的结尾。通常是一个空间

字符串
(注意空格)匹配。
String不匹配

将正则表达式更改为:

[[:<:]]String[[:>:]]{0,1}[[:punct:]]{0,1} 
[[::]{0,1}[[:punct:]{0,1}

2件事:什么版本的mysql?此外,mysql手册警告您不要在多字节字符集上使用regexp,因此您应该检查这不会导致问题。2件事:什么版本的mysql?此外,mysql手册警告您不要在多字节字符集上使用regexp,因此您应该检查这是否会导致问题。谢谢您,Johan!我想我很清楚为什么添加这些边界({0,1})是有效的,但是你介意确切地解释一下边界的使用是如何突然导致表达式与标点匹配的吗?边界
{0,1}
表示零或一(空格和/或标点符号)。谢谢!现在出现的唯一问题是,这个表达式不尊重单词的边界。例如,如果我想找到car这个词,它将匹配carrier、carrot、carnage和c。有什么想法吗?谢谢你,约翰!我想我很清楚为什么添加这些边界({0,1})是有效的,但是你介意确切地解释一下边界的使用是如何突然导致表达式与标点匹配的吗?边界
{0,1}
表示零或一(空格和/或标点符号)。谢谢!现在出现的唯一问题是,这个表达式不尊重单词的边界。例如,如果我想找到car这个词,它将匹配carrier、carrot、carnage和c。有什么想法吗?