You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 12:01:02