我试图找到一种方法来使用ARRAYFORMULA和REGEXEXMATCH来解析从网球联盟网站下载到Google电子表格中的列中的条目。
通常,对于单元格A1中的Fred Budde (56) / Warren Girle (55)7-6, 7-5Dan McClure (54) / Brian Giesecke (68)
,我希望复制:
Fred Budde (56)
进入C列第1行,Warren Girle (55)
进入列D行1,- 结果
7-6, 7-5
进入列E行1, Dan McClure (54)
到列F行1和Brian Giesecke (68)
到列G行1中。
当然,结果可能是2-6,6-2,1-0[11-9]
或6-2,7-6[10-8]
。
最后我想到了:=ARRAYFORMULA(REGEXEXTRACT($A$2:$A$3,"^(.*?) \((\d+)\) \/ (.*?) \((\d+)\)(.*?)(.*?) \((\d+)\) \/ (.*?) \((\d+)\)"))
但这并不像它应该的那样工作,将第一个球员的年龄与他的名字分开,其他球员和结果也不正确。因此,我尝试在每列中使用单独的公式:=ArrayFormula(IFERROR(REGEXEXTRACT(A1:A, "(\d+-\d+,\s\d+-\d+|\d+-\d+,\s\d+-\d+,\s\d+-\d+|\d+-\d+,\s\d+-\d+,\s\d+-\d+,\s\d+-\d+)")))
其中|
表示“或”,两组结果被抽象出来-但没有其他结果!
如果省略了任何球员的名字,那么公式应该在H列中报告“错误”。如果结果不完整,则还应在H列中报告“错误”。
我会喜欢一些人谁知道他们在做什么!
1条答案
按热度按时间xtfmy6hx1#
使用
let()
以分段方式构建正则表达式,这样过程更容易管理:参见let()、lambda()和map()。
要对数组公式执行同样的操作,请使用以下正则表达式: