求助:s.regex() 结果的返回形式
目前,s.regex() 结果返回的是一个序列,这里 s 是文本,不管正则表达式有几个分组都返回一个单层序列。比如以下例子,
赵大19天、钱二24天、孙老三24天、王老五5天、李四29天
=A1.regex@p("(\\PP+?)(\\d+)")
=create(姓名,天数).record(A1.regex@p("(\\PP+?)(\\d+)"))
=A1.split@r("\\pP").regex@p("(\\PP+?)(\\d+)";姓名,天数)
A2 返回的结果是: [赵大,19, 钱二,24, 孙老三,24, 王老五,5, 李四,29]
从实际使用情况来看,这样的返回结果经常需要进一步变形成两列,比如上述代码格中的
A3 代码格,先正则匹配出结果,然后再构造成两列的表,或者,
A4 代码格,先把文本按分隔符拆分成 list,然后再用 A.regex(ptn; 字段名,…) 返回序表。
这样写总感觉不直接,不尽兴,想着 s.regex()能否直接返回成序表 ( 排列或者 list of records),比如伪代码:
s.regex("()()...";f1,f2,...)
当参数指定字段名时,就返回几列的序表,没有指定字段参数时仍然返回序列。
因为,当有多个捕获分组时,返回成序表、排列的应用场景更多,且观察到市面上支持正则匹配的数据库基本上也是根据指定名称返回成多列,比如以下例子会返回
{‘first_name’: John, ‘last_name’: Doe}
regexp_extract('John Doe', '([a-z]+) ([a-z]+)', ['first_name', 'last_name'],'i')
恳请大佬们得空时看看能否这样支持 s.regex(“()()…”;f1,f2,…)?
