数据库REGEXP查询问题:如何精准匹配.cxx后缀文件
解决REGEXP精准匹配.cxx后缀文件的问题
嘿,你的问题很典型——原来的正则表达式没精准限定.cxx是文件名的后缀,还忽略了正则里.的特殊含义(它是匹配任意单个字符的通配符),所以才会把filecxx.txt这种包含cxx但不是后缀的文件也捞出来。
咱们来修改SQL语句,让它只匹配以.cxx结尾的文件:
SELECT * FROM sourcefile WHERE idowner IS NULL AND name REGEXP '\.cxx$'
关键调整说明:
\.:把.转义成普通字符,这样它只会匹配文件名里实际的点号,而非任意字符$:正则里的结束锚点,确保.cxx是字符串的最后一部分,也就是文件名的后缀
修改后,查询结果就只会包含file.cxx、test.cxx这类真正以.cxx为后缀的文件,filecxx.txt、file.cxx.bak这类不符合要求的文件会被自动排除。
如果你的数据库支持不区分大小写匹配(比如MySQL默认REGEXP不区分大小写),这个语句也会匹配.CXX、.Cxx这类变体;要是需要严格区分大小写,可以根据数据库特性调整,比如MySQL里用REGEXP_BINARY '\.cxx$'。
内容的提问来源于stack exchange,提问作者John Salzman
相关产品推荐
相关产品推荐

