如何用q语言like函数的单个正则匹配指定数字结尾的foo字符串
Q语言like函数正则匹配解决方案
要实现你需要的匹配效果,正确的正则字符串得用分组匹配覆盖单数字(8、9)和双数字(10-12)的场景,Q语言的like支持POSIX基本正则语法,直接这么写就行:
regstr:"foo([89]|1[0-2])"
验证效果:
q) ("foo7"; "foo8"; "foo9"; "foo10"; "foo11"; "foo12"; "foo13") like regstr 0111110b
之前写法失效的原因
foo[8-12]的问题:方括号里的8-12会被解析为单个字符的范围,但ASCII码中'8'的数值大于'1',这个范围无效,最终只会匹配字符'2',完全不符合需求。foo[1[0-2]|[1-9]]的问题:方括号仅用于定义单个字符的集合,不能嵌套或在内部用竖线做分支匹配,属于语法错误,所以会触发类型报错。
内容的提问来源于stack exchange,提问作者foam78
相关产品推荐
相关产品推荐

