使用正则表达式匹配mysql中模式的子字符串

时间:2018-05-08 22:37:52

标签: mysql regex

我想在mysql中查询与以下模式匹配的所有字符串。

  1. 至少一个非空字符,
  2. 后跟文字短划线字符-
  3. 然后是至少一个非空字符,
  4. 然后是文字字符串in ('true')
  5. " and"的子字符串不能出现在-in ('true')之间。

    例如:

    segment-123 in ('true') 
    

    符合上述模式。

    content-foo and segment in ('true') 
    

    与上述模式不匹配,因为它具有子串" and"在-in ('true')之间。

    这是否可以在mysql中使用REGEXP实现?非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

mysql> select 'segment-123 in (\'true\')'
    regexp '[^[:space:]]+-[^[:space:]]+ in \\(\'true\'\\)' as matched;
+---------+
| matched |
+---------+
|       1 |
+---------+

mysql> select 'content-foo and segment in (\'true\')' 
    regexp '[^[:space:]]+-[^[:space:]]+ in \\(\'true\'\\)' as matched;
+---------+
| matched |
+---------+
|       0 |
+---------+

有关MySQL中正则表达式语法的更多文档,请参阅https://dev.mysql.com/doc/refman/8.0/en/regexp.html#regexp-syntax