我的桌子里面有很多单词(列名'qWord'),内容包括'Utility','Utter','Unicorn'和'Utile'
我正在尝试执行SELECT来查找最多只有一个字母't'的qWord字符串。
使用REGEXP我认为这将是一个简单的陈述,如:
SELECT *
FROM entries.qentries
WHERE (qWord REGEXP 'T{0,1}')
但我仍然在输出中获得'Utter'和'Utility' - 以及'Utile'和'Unicorn'。
那我在这里错过了什么?
(FWIW:MySQL 8.0.11,在Windows 8.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{0}|t{1}')
以及(qWord REGEXP '(?<=[^t]|^)(t{0}|t{1})(?:[^t]|$)' )
没有成功,所以我仍然坚持
答案 0 :(得分:1)
您可以使用以下正则表达式:
SELECT *
FROM entries.qentries
WHERE (qWord REGEXP '^[^tT]*[tT]?[^tT]*$')
<强>说明:强>
^
,$
开始和结束锚点(这是避免单词部分匹配所必需的)[^tT]*
任何非t
或T
0次或以上的字符[tT]?
最多出现一次t
或T
(?
相当于{0,1}
)[^tT]*
任何非t
或T
0次或以上的字符附加说明:
[^tT]
此字符范围将接受非t
或T
的任何内容(空格,.
,\n
,其他字符也将是如果您只想接受字母并排除t,T
可以使用的[a-su-zA-SU-Z]
,则可以限制此项,如果您想在此类中添加其他字符,只需在末尾添加[a-su-zA-SU-Z -]
-
1}}也会接受包含空格和Wire.write(readNDEFMsg, sizeof(readNDEFMsg));
的单词。