Mysql正则表达式搜索不包含重复字符

2024-04-29

我有一个数据库表,其中包含字典中的单词。

现在我想选择字谜词。例如,如果我给出字符串SEPIAN它应该获取像这样的值apes, pain, pains, pies, pines, sepia, etc.

为此,我使用了查询

SELECT * FROM words WHERE word REGEXP '^[SEPIAN]{1,6}$'

但这个查询返回这样的词anna, essen其中包含不在提供的字符串中的重复字符。例如。anna有两个n但只有一个n在搜索字符串中SEPIAN.

我该如何编写正则表达式来实现这一目标?此外,如果当时我的搜索字符串中有重复的字符,则重复的字符应该反映在结果中。


由于MySQL不支持反向引用捕获组,典型的解决方案是(\w).*\1不管用。这意味着给出的任何解决方案都需要枚举所有可能的双精度数。此外,据我所知,反向引用在前向或后向中无效,并且 MySQL 不支持前向和后向。

但是,您可以将其拆分为两个表达式,并使用以下查询:

SELECT * FROM words
WHERE word REGEXP '^[SEPIAN]{1,6}$'
AND NOT word REGEXP 'S.*?S|E.*?E|P.*?P|I.*?I|A.*?A|N.*?N'

不太漂亮,但它可以工作,而且应该相当高效。


要支持重复字符的设定限制,请对辅助表达式使用以下模式:

A(.*?A){X,}

Where A是你的性格并且X是允许的次数。

所以如果你要添加另一个N到你的字符串SEPIANN(总共 2N是),您的查询将变为:

SELECT * FROM words
WHERE word REGEXP '^[SEPIAN]{1,7}$'
AND NOT word REGEXP 'S.*?S|E.*?E|P.*?P|I.*?I|A.*?A|N(.*?N){2}'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysql正则表达式搜索不包含重复字符 的相关文章

随机推荐

  • 使用存储的日期字段来计算计算当前过去天数的字段

    我正在使用 MySQL 和 phpMyAdmin 我的数据库中有一个 日期 字段 我需要在 MySQL db 中创建一个字段 该字段将计算并显示自每个记录 行的 日期 字段中的日期以来已经过去的天数 我没有能力使用 PHP 即时生成代码 有
  • 如何重新初始化jquery数据表

    如何重新初始化 jQuery 数据表 我什至尝试删除表格元素 该表仍在显示 我的代码是这样的 function removeExistingDataTableReference tableid if oTable null oTable f
  • Delphi:平滑折叠/展开形式

    需要你的帮助 我一直在寻找 我在德尔福西雅图 试图平滑调整表单底部的大小 就我而言 调整大小 只是有点折叠 展开 如下所示 我怎样才能意识到这一点 我尝试过使用 TTimer procedure TForm1 Timer1Timer Sen
  • 在 (BOOL)webView 中:如何打开在 UIWebView 中单击的 URL 以打开模态 UIWebView

    感谢您查看我的问题 让我先描述一下该应用程序 我有一个适用于 iOS5 1 的基于选项卡栏的应用程序 它使用情节提要和 ARC 有四个选项卡 每个选项卡都有一个视图控制器 显示带有本地 HTML 文件的 Web 视图 每个视图是要显示的一组
  • this.http.get 的超时时间不能超过 2 分钟吗? [复制]

    这个问题在这里已经有答案了 我的 Angular 4 3 2 代码正在调用我的后端服务 需要 2 4 分钟才能返回 仅使用默认值this http get代码中 我看到默认超时在 2 分钟后开始 然而 当我尝试设置超过 2 分钟的超时时 它
  • Scala 中的特征和抽象方法重写

    我有一个基本抽象类 特征 它有一个抽象方法foo 它由几个派生类扩展和实现 我想创建一个可以混合到派生类中的特征 以便它实现foo 然后调用派生类的foo 就像是 trait Foo def foo trait M extends Foo
  • 将 numpy memmap 刷新到 npy 文件

    有没有一种方法可以将 numpy memmap 数组保存到 npy文件 显然 有一种方法可以从 a 加载这样的数组 npy文件如下 data numpy load input npy mmap mode r 但刷新文件并不等同于将其存储在
  • Visual Studio Community 2015 安装失败

    最近安装了VS 2015 windows 10 但是出现了一些包失败的情况 稍后详述 当尝试启动新项目时 我收到一条错误消息 无法创建编译器 所以我卸载并修复了微软可再发行组件并再次尝试 从那以后我根本无法安装VS 我收到以下消息 Rosl
  • 如何用CGAL获取多边形网格的顶点和面?

    With CGAL 我能够得到一个多面体网格OFF格式 例如 下面的程序构建两个四面体 计算它们的交集 并将结果返回到OFF文件 这OFF输出提供顶点坐标和顶点索引给出的面 但我想将顶点和面作为 C 变量 例如double顶点向量和int面
  • 当我们点击编辑器外部时如何隐藏ckeditor?

    这是我的代码 div div
  • Firebase 3 - 附加身份验证范围数据

    在 Firebase 3 文档中 他们说您可以获取其他范围数据 例如 可选 指定您想要从身份验证提供程序请求的其他 OAuth 2 0 范围 要添加范围 请调用 addScope 例如 provider addScope https www
  • 如何读取 stripe webhook 响应 [重复]

    这个问题在这里已经有答案了 我创建了 Coldfusion 文件来捕获 STRIPE Webhook 响应
  • 如何在 android studio 中监听 shell 命令的响应?

    在 Android 终端模拟器中 我可以输入以下命令 gt su gt echo class power supply battery charge rate 根据手机的充电方式 输出将为 无 正常 或 涡轮 我希望能够检索此输出并存储它作
  • PHP: Datetime::Diff 结果比较

    我试图比较两个日期之间的差异 但结果似乎非常错误 例如以下代码 datetime1 new DateTime 2009 10 11 datetime2 new DateTime 2009 10 13 interval datetime1 g
  • PostgreSQL 中列名包含冒号的问题

    我从 OSM 下载了形状数据 我已将数据从 Shapefile 导入到 PostgreSQL 没有任何问题 但在执行 select 语句时出现错误 Select addr city From location Error syntax er
  • Kubernetes - 向 kube dns 中的匿名用户授予 RBAC 访问权限

    我有一个带有主节点和工作节点的 Kubernetes 集群设置 Kubectl cluster info 显示 kubernetes master 以及 kube dns 成功运行 我正在尝试访问下面的 URL 因为它是我的组织内部的 所以
  • 打开浏览器开发者工具会影响应用程序性能吗?

    我想知道打开浏览器开发人员工具是否真的会以任何方式影响应用程序性能 这不仅仅是考虑在同一窗口中打开开发人员工具 它可以在新窗口或同一窗口中 如果开发人员工具未打开与打开状态相比 应用程序渲染 性能是否有任何差异 打开开发人员工具肯定会影响性
  • 如何在片段之间传递数据

    我试图在程序中的两个片段之间传递数据 它只是存储在列表中的一个简单字符串 列表在片段 A 中公开 当用户单击列表项时 我需要它在片段 B 中显示 内容提供程序似乎只支持 ID 因此这不起作用 有什么建议么 为什么不使用捆绑包呢 从您的第一个
  • 计算嵌套列表的深度或最深级别

    A 在一项作业上遇到了真正的问题 并且令人头疼 我正在上一堂入门编程课 我必须编写一个函数 给定一个列表 该函数将返回它所达到的 最大 深度 例如 1 2 3 将返回 1 1 2 3 将返回 2 我写了这段代码 这是我能得到的最好的T T
  • Mysql正则表达式搜索不包含重复字符

    我有一个数据库表 其中包含字典中的单词 现在我想选择字谜词 例如 如果我给出字符串SEPIAN它应该获取像这样的值apes pain pains pies pines sepia etc 为此 我使用了查询 SELECT FROM word