mysql - MySQL中两个看似相似的正则表达式之间的区别 - 相同的输出
问题描述
我一直在尝试自学 MySQL,并且想知道是否有人可以解释使用正则表达式元字符“*”和“?”之间的区别。我正在使用的书将它们都描述为“匹配 (0) 或它前面的字符串的一个实例”。我尝试使用这两种方法,同时在我创建的练习表中寻找相同的东西并得到完全相同的输出,所以如果一个操作员应该是贪婪的而另一个不是,它看起来并不总是这样每张桌子。
编辑 1:我包含了我从“*”获得的输出的屏幕截图,显示它与“ax*”形式的语句匹配。
编辑 2:regex101.com 没有将 MySQL 列为“风味”,当我尝试在那里对 Alexandra 执行“al*”时,它表示任何风味都不匹配。MySQL Workbench 将 Alexandra 作为输出之一返回的事实是否是 MySQL 特有的,不适用于任何其他语言?
解决方案
它们并不完全相同。 "*"
意思是“0个或更多”。 "?"
表示“0 或 1”,如“可选”。所以,给定“ax*b”和“ax?b”:
- 两者都不会匹配“a”
- 两者都将匹配“ab”
- 两者都将匹配“axb”
- 只有第一个会匹配“axxb”或“axxxxxxb”
推荐阅读
- html - 输入和标签标签之间的间隙具有单独的光标样式
- iis - 如何在 IIS 中创建多个自定义 503 页面
- javascript - 使用按钮关闭 React 对话框
- google-apps-script - 仅复制具有嵌入公式的单元格结果的脚本
- c# - 我是编程新手,正在努力解决 C# 中的一个简单的咖啡任务
- python - 获取属性指定为“的所有标签中包含的文本" 在 python 中使用 WebDriver Selenium
- docker - Docker:“错误拉取图像配置:未知 blob”
- mongodb - Quarkus PanacheMongoEntity - Enum 没有自动编码/解码吗?
- c# - 如何将数据库从 SQL Server 烘焙到 C#
- haskell - 为任何类型的数字定义类型类的实例