【问题标题】:Using MySQL Regex - Match the first word then second letter of a string使用 MySQL 正则表达式 - 匹配字符串的第一个单词,然后是第二个字母
【发布时间】:2014-03-21 02:34:35
【问题描述】:

您将如何编写一个 MySQL 正则表达式模式来匹配字符串中完整的第一个单词和第二个单词的第一个字符。该字符串实际上不必以单词开头。大小写无关紧要。

当搜索第一个单词出现为“Stack”且下一个单词以“O”开头的字符串时,正则表达式模式应针对以下所有情况返回 true:

  1. -> 堆栈(溢出)很棒
  2. 堆栈 -> 溢出很棒
  3. 堆栈溢出很棒

如果“Stack”不是第一个单词出现或第二个单词不是以“O”开头,则会失败,如下所示:

  1. Stack Overflow 是不是最好的?
  2. 堆栈溢出

我尝试了一些模式,但只提出了以下几点:

SELECT * FROM members WHERE description REGEX '^[[:<:]]Stack[[:>:]].+[[:<:]]O'

这里的问题是:

  1. 它只匹配实际上以“Stack”开头的字符串,但它也应该匹配像+=,Stack这样的字符串
  2. 它匹配任何介于“Stack”和“Overflow”之间的单词,甚至是介于“Stack”和“Overflow”之间的单词

如果我能找到第一个和第二个单词的边界就可以了。

【问题讨论】:

    标签: mysql regex database string


    【解决方案1】:

    我认为这个表达式可以满足你的要求:

     where description rlike '^[^a-zA-Z]*Stack [^a-zA-Z]*O'
    

    【讨论】:

    • 在这种情况下,数字很重要。我接受了您的有用回答,并提出了^[^A-Za-z0-9]*Stack[^A-Za-z0-9]*O,它可以正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-22
    • 1970-01-01
    • 2014-09-10
    相关资源
    最近更新 更多