【问题标题】:MySQL RegExp how to match all given letters in any positionMySQL RegExp如何匹配任何位置的所有给定字母
【发布时间】:2013-09-12 16:20:16
【问题描述】:

如何做到这一点?

有一个这样的字符串数组:

  • axa
  • ttx
  • atx
  • xat

如何找到输入字符串“tax”的所有字母在所有可能的位置? 结果必须是:

  • atx
  • xat

认为使用 REGEXP 会很容易,但卡住了。有什么建议吗?

【问题讨论】:

    标签: mysql regex arrays sql-like


    【解决方案1】:
    txa|tax|axt|atx|xta|xat
    

    Edit live on Debuggex

    老实说,您可能无需“硬编码”就可以做到这一点。但是,正则表达式可能会比这更长,因为税收的排列并不多。

    ^(?=.*[t])(?=.*[x])(?=.*[a])[tax]{3}$
    

    Edit live on Debuggex

    这是实际的非“硬编码”方式。

    【讨论】:

    • 字母有六种组合,而不是三种。
    • @GordonLinoff 哇,我觉得自己很愚蠢哈哈,我刚刚回答了 OPs 问题。
    • 似乎工作正常,但 MySQL 在 '?=' 上给出错误提示:错误代码:1139。从 regexp 得到错误 'repetition-operator operand invalid'
    • @user2773387 表示这是因为 MySql 不支持正向前瞻。
    猜你喜欢
    • 1970-01-01
    • 2023-04-10
    • 2011-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-27
    • 1970-01-01
    • 2014-06-27
    相关资源
    最近更新 更多