Jej*_*ort 2 regex regex-group kdb
我有一个包含以下字段的表:
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"
Run Code Online (Sandbox Code Playgroud)
我只想选择字段遵循模式的行,"abc_[anything]_ef[anything]"以使结果表为:
id field
---------------
0 "abc_xy_ef"
1 "abc_ef"
4 "abc_ef_ghi"
Run Code Online (Sandbox Code Playgroud)
通过放置多个where子句以过滤到所需结果,可以克服kdb中regex的局限性
q)select from t where field like "abc*", field like "*ef*"
id field
---------------
0 "abc_xy_ef"
1 "abc_ef"
4 "abc_ef_ghi"
Run Code Online (Sandbox Code Playgroud)
显然,这不是最有效的方法,因为在每个子句之后,所有结果都将再次处理。您可以引入文档https://code.kx.com/v2/kb/regex/#regex-libraries中指定的更全面的regex库,例如pcre2或re2。