正则表达式:只匹配单个字符(MySQL)?

时间:2011-08-05 21:46:36

标签: mysql regex posix-ere

我需要一个POSIX ERE格式的正则表达式(对于MySQL)来匹配字符串中的任何单个字符(在2个空格之间):

"abc d e f ghi"应与"d e f"

匹配

我只有非常基本的正则表达式知识(在PHP中)并且无法在MySQL中使用它...

更新: 请查看我的其他问题,了解我正在尝试做的事情以及我正在使用的功能:

MySQL: how to remove all single characters from a string?

3 个答案:

答案 0 :(得分:1)

" [a-z] "能做你想做的吗?

答案 1 :(得分:0)

一般posix方式:/ ([a-z]) /ig但是如果它的MySQL RLIKE,它将是' [a-z] '(例如,它取决于列整理

答案 2 :(得分:0)

您应该使用MySQL word boundaries

  
      
  • [[:<:]],[[:>:]]
  •   
     

这些标记代表字边界。他们匹配开头和   词尾,分别。一个单词是一系列单词字符   不在单词字符之前或之后的单词字符。一个字   character是alnum类中的字母数字字符或   下划线(_)。

     

的MySQL>选择'a word a'REGEXP'[[:<:]] word [[:>:]]';    - > 1   MySQL的>

这样你的MySQL正则表达式就是[[:<:]][[:alpha:]][[:>:]]。这将匹配MySQL中任何常设的字母字符,因为提问者似乎确实需要。然而, 如果它只是一个由空格包围的非空格字符,则应使用RegEx [[:<:]][^[:blank:]][[:>:]]

请注意,此单词边界语法不在POSIX ERE Standard中,但许多其他工具具有类似的语法;例如,GNU grep需要'\&lt;'和'\&gt;'在他们的RE中意味着左右边界。