0

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

"abc d e f ghi" 应该匹配"d e f"

我只有非常基本的正则表达式知识(在 PHP 中),不能让它在 MySQL 中工作......

更新: 请参阅我的其他问题,了解我正在尝试做什么以及我正在使用的功能:

MySQL:如何从字符串中删除所有单个字符?

4

3 回答 3

1

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

于 2011-08-05T21:52:01.153 回答
0

您应该使用MySQL 单词边界

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

这些标记代表单词边界。它们分别匹配单词的开头和结尾。单词是前面或后面没有单词字符的单词字符序列。单词字符是 alnum 类中的字母数字字符或下划线 (_)。

mysql> SELECT 'a word a' REGEXP '[[:<:]]word[[:>:]]'; -> 1个mysql>

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

请注意, POSIX ERE 标准中没有这个单词边界语法,但许多其他工具具有类似的语法;例如,GNU grep在其 RE 中使用 '\<' 和 '\>' 来表示左右单词边界。

于 2012-11-02T02:22:27.883 回答
0

一般的posix方式:/ ([a-z]) /ig但如果它的MySQL RLIKE,它会是' [a-z] '(至于它取决于列排序规则的情况

于 2011-08-05T21:51:56.287 回答