我有一个包含以下字段的表:
t:([]id:til 5; field:("abc_xy_ef";"abc_ef";"abc_de";"abc_xy_uv";"abc_ef_ghi"))
id field
---------------
0 "abc_xy_ef"
1 "abc_ef"
2 "abc_de"
3 "abc_xy_uv"
4 "abc_ef_ghi"
我只想选择字段遵循模式 "abc_[anything]_ef[anything]"
的行,这样生成的表将是:
id field
---------------
0 "abc_xy_ef"
1 "abc_ef"
4 "abc_ef_ghi"
最佳答案
可以通过放置多个 where 子句来过滤所需的结果来克服 kdb 中正则表达式的限制
q)select from t where field like "abc*", field like "*ef*"
id field
---------------
0 "abc_xy_ef"
1 "abc_ef"
4 "abc_ef_ghi"
显然这不是最有效的方法,因为在每个子句之后,所有结果都会再次处理。您可以引入更全面的正则表达式库,例如文档中指定的 pcre2 或 re2 https://code.kx.com/v2/kb/regex/#regex-libraries
关于regex - 如何从像abc****ef****这样的字段中选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56948220/