首页  >  问答  >  正文

等效MySQL正则表达式,相当于以下Python正则表达式

python模式 => ^(?=.\bABDUL\b)(?=.\bHAI\b.)(?=.\bMANSOOR\b).*$
需要等效的mysql模式
你能帮我吗?

P粉496886646P粉496886646409 天前399

全部回复(1)我来回复

  • P粉314915922

    P粉3149159222023-09-08 00:58:02

    问题中的正则表达式是一种奇怪的方式来匹配简单的单词。不清楚预期的输入是什么。也许,输入可以证明这种方法的合理性。

    ^(?=.\bABDUL\b)(?=.\bHAI\b.)(?=.\bMANSOOR\b).*$

    这意味着:开头必须是任何不是单词的字符,然后是 ABDUL,一个非单词字符,HAI,一个非单词字符,MANSOOR,一个非单词字符或字符串的结尾。

    ^[^[:alnum:]]ABDUL[^[:alnum:]]HAI[^[:alnum:]]MANSOOR([^[:alnum:]]?.*)?$

    这意味着:开头不是数字或字母字符(字母数字字符),ABDUL,一个非字母数字字符,HAI,一个非字母数字字符,MANSOOR,一个非字母数字字符或字符串的结尾。

    我没有测试它,也没有打算使它完全与第一个相同,但应该足够接近。

    对于任何想要将其复制到他们的代码中的人:

    • 匹配第一个字符并不常见,可能是原始正则表达式中的一个错误。
    • (?=...) 是一个“前瞻断言”,不消耗任何字符,POSIX 版本没有它,但对于简单的字符串搜索可能不重要。
    • 两个版本都应该匹配像 !ABDUL$HAI)MANSOOR 这样的字符串 - 确保这就是你想要的。

    对于想要理解我使用的正则表达式的人,可以参考以下链接:

    https://dev.mysql.com/doc/refman/8.0/en/regexp.html(mysql 的 POSIX 语法)和 https://docs.python.org/3/library/re.html(python 的 PCRE = Perl 兼容语法)

    回复
    0
  • 取消回复