如何使下面的正则表达式适用于MySql?
我已经编写了正则表达式并在网上进行了测试,效果很好。当我在终端MySQL控制台中测试时,它不匹配,我得到一个空集。我相信MySQL regexp语法在某种程度上是不同的,但我找不到正确的方法 这是我使用的数据:如何使下面的正则表达式适用于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) 有什么我可以更改以获得相同的结果吗?
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(;|$)