查找包含非 [a-z] 或 [0-9] 字符的标签

Posted

技术标签:

【中文标题】查找包含非 [a-z] 或 [0-9] 字符的标签【英文标题】:Find tags containing characters that aren't [a-z] or [0-9] 【发布时间】:2017-07-28 18:59:34 【问题描述】:

我想为 Stack Exchange 数据资源管理器创建一个查询,该查询返回任何包含特殊字符的标签。 (具体来说,任何不是a-z0-9-+ 的字符)

搜索应返回c#、c#-to-f#、.net 和python-2.7 等标签。

我尝试了几种不同的解决方案,但每个解决方案似乎都有自己的问题。


SELECT * FROM tags WHERE tagname NOT REGEXP '^[a-zA-Z0-9]*$'

来源Oracle SQL - REGEXP_LIKE contains characters other than a-z or A-Z

错误REGEXP_LIKE 不是可识别的内置函数名称。


SELECT * FROM tags WHERE tagname NOT REGEXP '^[a-zA-Z0-9]*$'

来源How to get all rows that contain characters others than [a-zA-Z] in mysql

错误REGEXP附近的语法不正确

【问题讨论】:

【参考方案1】:

与其尝试在 SQL 中使用短语“仅包含非特殊字符”并否定它,不如使用短语“包含特殊字符”更容易:

SELECT * FROM tags WHERE tagname LIKE '%[^-+a-z0-9]%'

您会发现其中包含 很多 个包含. 的标签。您可能还希望将其添加到要忽略的字符中。

SELECT * FROM tags WHERE tagname LIKE '%[^-+a-z0-9.]%'

【讨论】:

以上是关于查找包含非 [a-z] 或 [0-9] 字符的标签的主要内容,如果未能解决你的问题,请参考以下文章

通配符(一般用来查找文件)

text 错误:错误:“T”不是有效的基于文件的资源名称字符:基于文件的资源名称必须仅包含小写的a-z,0-9或

通配符(一般用来查找文件)

linux文本处理常用指令(序列二)

文件管理-3week

正则表达式