Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.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_Regex - Fatal编程技术网

如何使下面的正则表达式适用于MySql?

如何使下面的正则表达式适用于MySql?,mysql,regex,Mysql,Regex,我已经编写了正则表达式并在网上进行了测试,效果很好。当我在终端MySQL控制台中测试时,它不匹配,我得到一个空集。我相信MySQL regexp语法在某种程度上是不同的,但我找不到正确的方法 这是我使用的数据: edu.ba; medu.ba; edu.ba; med.edu.ba; edu.com; edu.ba 我应该只获得edu.ba匹配项,包括;如果有的话。除了在实际的查询中,它可以正常工作 (\;+|^)\bedu.ba\b(\;+|$|\n) 有什么我可以更改以获得相同的结果吗?

我已经编写了正则表达式并在网上进行了测试,效果很好。当我在终端MySQL控制台中测试时,它不匹配,我得到一个空集。我相信MySQL regexp语法在某种程度上是不同的,但我找不到正确的方法

这是我使用的数据:

edu.ba;
medu.ba;
edu.ba;
med.edu.ba;
edu.com;
edu.ba
我应该只获得
edu.ba
匹配项,包括;如果有的话。除了在实际的查询中,它可以正常工作

(\;+|^)\bedu.ba\b(\;+|$|\n)

有什么我可以更改以获得相同的结果吗?

您想在分号或字符串的开始/结束之间匹配
edu.ba
。单词边界在这里是多余的(尽管如果您想试验,MySQL v8之前的MySQL正则表达式使用了
[[:]]
,而在MySQL v8+中,您需要使用带有
\b
-
'\\b'
)的双反斜杠)

使用

详细信息

  • (;|^)
    -
    或字符串的开头
  • edu[.]ba
    -
    edu.ba
    文字字符串(括号内的点始终与文字点匹配)
  • (;|$)
    -
    或字符串结尾

也许
(;| ^)edu[.]ba(;|$| | \n)
或者干脆
(;| ^)edu[.]ba(;|$)
就行了。如果左侧和右侧上下文比单词边界更严格,为什么要使用单词边界?如果你是指字面上的点,你也应该转义一个点。天哪!你说得对,很简单,但我看不出来。。谢谢它正在工作:)\b是不必要的,它产生了错误的结果。
(;|^)edu[.]ba(;|$)