mysql - MySQL 8 + 正则表达式词边界
问题描述
我想在单词的开头或结尾搜索术语“ed”,以下 SQL 语句仅匹配完全匹配的单词。
SELECT * FROM ul_product
where productname REGEXP '\\bed\\b'
如果我执行以下操作,则会得到 ed 位于单词开头或结尾的结果
SELECT * FROM ul_product
where productname REGEXP '(\\bed)|(ed\\b)'
这是它应该如何工作的吗?
在线单词边界和示例的描述使我相信语句 1 会产生语句 2 的结果。
我可以按原样使用我创建的语句来进行“精确”和“部分”匹配,但这对吗?
解决方案
Regex'\\bed\\b'
搜索被单词边界'ed'
包围- 换句话说,它搜索word 'ed'
。
另一方面,正则表达式:'(\\bed)|(ed\\b)'
搜索'\\bed'
或'ed\\b'
(管道字符代表正则表达式中的“或”)。所以它'ed'
在单词的开头或单词的结尾匹配 - 这似乎是你想要的。
请注意,这里不需要括号。你可以这样写:
where productname REGEXP '\\bed|ed\\b'
推荐阅读
- list - 列出函数内的变量分配导致对全局变量的不必要更改
- c# - 在 Word 文档中找不到段落和表格(打开 XML)
- r - 选择一些列并将属性分配给数据框中的列
- spring - Spring阻塞请求:CORS策略
- c# - 如何将粒子系统附加到精灵上的点
- r - 将箭头添加到多面 ggplot,在情节之外,仅在一个方面
- java - 如何根据Java中的最后一个字符对数组列表进行排序?
- swift - UI Button 到另一个视图控制器
- javascript - 如何检查 DOM/HTML 元素属性名称在 Javascript/JSX 中是否有效?(防止无效字符异常)
- deep-learning - Torch 神经网络的自我实现