我需要一个 POSIX ERE 格式的正则表达式(对于 MySQL)来匹配字符串中的任何单个常设字符(两个空格之间):
"abc d e f ghi"
应该匹配"d e f"
我只有非常基本的正则表达式知识(在 PHP 中),不能让它在 MySQL 中工作......
更新: 请参阅我的其他问题,了解我正在尝试做什么以及我正在使用的功能:
我需要一个 POSIX ERE 格式的正则表达式(对于 MySQL)来匹配字符串中的任何单个常设字符(两个空格之间):
"abc d e f ghi"
应该匹配"d e f"
我只有非常基本的正则表达式知识(在 PHP 中),不能让它在 MySQL 中工作......
更新: 请参阅我的其他问题,了解我正在尝试做什么以及我正在使用的功能:
做" [a-z] "
你想做的事吗?
您应该使用MySQL 单词边界:
- [[:<:]], [[:>:]]
这些标记代表单词边界。它们分别匹配单词的开头和结尾。单词是前面或后面没有单词字符的单词字符序列。单词字符是 alnum 类中的字母数字字符或下划线 (_)。
mysql> SELECT 'a word a' REGEXP '[[:<:]]word[[:>:]]'; -> 1个mysql>
这样您的 MySQL 正则表达式将是[[:<:]][[:alpha:]][[:>:]]
. 这将匹配 MySQL 中的任何常设字母字符,正如提问者似乎实际需要的那样。但是,如果它只是一个由空格包围的非空格字符,[[:<:]][^[:blank:]][[:>:]]
则应使用 RegEx。
请注意, POSIX ERE 标准中没有这个单词边界语法,但许多其他工具具有类似的语法;例如,GNU grep在其 RE 中使用 '\<' 和 '\>' 来表示左右单词边界。
一般的posix方式:/ ([a-z]) /ig
但如果它的MySQL RLIKE,它会是' [a-z] '
(至于它取决于列排序规则的情况