regex - 如何从像abc****ef****这样的字段中选择?

标签 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"

我只想选择字段遵循模式 "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/

相关文章:

python - 用于匹配 "01.0 to 60.0 in steps of 0.5, or 99.9"的正则表达式?

kdb - 如何将每个表导出到 kdb+ 数据库中的 csv?

r - 在 R 中处理日期正则表达式捕获组输出

使用 re.match 的 Python 因长文本而挂起

Java 模式与组的匹配

console - q console有这么多支架,从一个逐渐成长为多个

python - 如何使用 qPython 将行插入 KDB

java - 匹配每个单词的第一个字符

php - 正则表达式正在划分单个语句?

C++:正则表达式:返回完整字符串和不匹配的组