我已经编写了正则表达式并在线测试了它,工作正常。当我在终端、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正则表达式使用 [[:<:]]
/[[:>:]]
word boundaries ,而在 MySQL v8+ 中,你需要使用双反斜杠和 \b
- '\\b'
)。
使用
(;|^)edu[.]ba(;|$)
详细信息
-
(;|^)
-;
或字符串开头 -
edu[.]ba
-edu.ba
文字字符串(括号内的点始终与文字点匹配) -
(;|$)
-;
或字符串结尾。
关于mysql - 如何使下面的正则表达式适用于 MySql?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57163074/