我有一个表格,里面有很多单独的单词(列名为'qWord'),内容包括‘实用’,‘说’,‘独角兽’和‘实用’。
我正在尝试执行SELECT来查找最多有一个字母't‘实例的qWord字符串。
使用REGEXP时,我认为这是一个微不足道的语句,比如:
SELECT *
FROM entries.qentries
WHERE (qWord REGEXP 'T{0,1}') 但是我仍然在输出中得到'Utter‘和'Utility’--以及'Utile‘和'Unicorn’。
那么我在这里错过了什么呢?
(参考资料: MySQL 8.0.11,在Windows8.1机器上运行的社区版)
这里是完整的REGEXP和我的道歉,因为我没有张贴它最初。我正在寻找仅由特定字母组成的单词,这部分工作正常。
但我也会用有限数量的给定字母的单词,比如t
SELECT * FROM entries.entries WHERE
(qWord NOT REGEXP 'C|F|G|I|J|K|P|Q|S|V|W|X|Y|Z|-')
AND (qWord REGEXP 'A|B|D|E|H|L|M|N|O|R|T|U')
AND (qWord REGEXP 't{0,1}') ; 我也尝试过(qWord REGEXP '(?<=[^t]|^)(t{0}|t{1})(?:[^t]|$)' )和(qWord REGEXP 't{0}|t{1}')
没有成功,所以我仍然卡住了
发布于 2018-06-11 08:53:38
您可以使用以下正则表达式:
SELECT *
FROM entries.qentries
WHERE (qWord REGEXP '^[^tT]*[tT]?[^tT]*$')说明:
^,match)[^tT]*起始和结束锚点(这是为了避免word times[tT]? {0,1})[^tT]*任何不是代码或代码0或更多的字符而需要的)最多出现一次$或t ( T等同于t或T不是t或T的任何字符0或更多次<T>F225t>
补充说明:
[^tT]此字符范围将接受除t或T以外的任何字符(空格、.、\n和其他字符也将被接受,如果您想只接受字母并排除您可以使用的t,T,则可以限制此范围:[a-su-zA-SU-Z],如果您想向此类添加其他字符,只需将它们添加到类的末尾[a-su-zA-SU-Z -]将还接受包含空格和-的单词。
https://stackoverflow.com/questions/50789246
复制相似问题