我在kdb中有下表...
p:([]r:("(A|A(A|B|C|D).*)";"A(E|F|G|H|I).*";"A(J|K|L|M).*";"A(N|O|P|Q|R|S).*";"A(T|U|V|W|X|Y|Z).*";"B.*";"(C|C(A|B|C|D|E).*)";"C(F|G|H|I|J|K).*";"C(L|M|N|O|P|Q|R).*";"C(S|T|U|V|W|X|Y|Z).*";"D.*"))
r
----------------------
"(A|A(A|B|C|D).*)"
"A(E|F|G|H|I).*"
"A(J|K|L|M).*"
"A(N|O|P|Q|R|S).*"
"A(T|U|V|W|X|Y|Z).*"
"B.*"
"(C|C(A|B|C|D|E).*)"
"C(F|G|H|I|J|K).*"
"C(L|M|N|O|P|Q|R).*"
"C(S|T|U|V|W|X|Y|Z).*"
"D.*"
和下面的函数,用于分析表的每一行...
getRange:{$[x like "*(*";
[if[x like "(*"; x2:1#1_x; l:enlist x2; x:-1_(3_x)];
l,:enlist {(3#x),"-",(-3#x)} ssr[ssr[ssr[x;".";""];")";"]"];"(";"["];
if[((count l)>1)&(l[1] like "*A-*"); l[1]:ssr[l[1]; "A-";"0-9/A-"]];
:l];
:enlist ssr[x;".";""]
];
}
哪个给出这样的输出...
r1:raze getRange'[exec r from p]
q)r1
,"A"
"A[0-9/A-D]*"
"A[E-I]*"
"A[J-M]*"
"A[N-S]*"
"A[T-Z]*"
"B*"
,"C"
"C[0-9/A-E]*"
"C[F-K]*"
"C[L-R]*"
"C[S-Z]*"
"D*"
我正在分析行,以便可以将它们插入到类似于select from t where sym like raze getRange'[exec r from p][0]
之类的查询中>
我想做的是将第一个“单个A”与第一个“ A组”组合在一起,并与C组合(因此如下所示)。但是我遇到的问题是,这些结果无法轻松插入查询中...
(,"A";"A[0-9/A-D]*") ,"A[E-I]*" ,"A[J-M]*" ,"A[N-S]*" ,"A[T-Z]*" ,"B*" (,"C";"C[0-9/A-E]*") ,"C[F-K]*" ,"C[L-R]*" ,"C[S-Z]*" ,"D*"
q中是否有办法可以做到这一点?本质上,
select from t where sym like (enlist "A";"A[0-9/A-D]*")
[如果需要任何其他信息,请告诉我。预先谢谢你。
我在kdb中有下表... p:([] r :(“(A | A(A | B | C | D)。*)”;“ A(E | F | G | H | I)。*“;” A(J | K | L | M)。*“;” A(N | O | P | Q | R | S)。*“;” A(T | U | V | W | X | Y | Z)。*“;” B。*“;”(C | C(A | B | C | D | E)。*)“;” C(F | G | H | I | J | K)。*“;” C(L | M | N | O | P | Q | R)....
为了匹配多个正则表达式,我们可以执行以下操作