是否有 REGEX 函数的替代方案不公开捕获组?

Is there an alternative to REGEX function not exposing capturing groups?

假设我有这样的字符串:

abcd efgh x23y mnop

我想把它分成 3 个部分:

我可以使用这个正则表达式 (online tester):

^([a-zA-Z\s]+)\s+([a-zA-Z0-9]+)\s+(.*?)\s*$

因为我在一个文件中有大量这样的字符串,所以我尝试了一次 LibreOffice Calc 及其功能的冒险体验 REGEX。该函数的最后一个参数是Occurrence Number,表示要提取或替换Text中Expression的哪一个匹配项.

起初我理解这个参数会给我相关捕获组的内容,而是 returns 参数值 1 的完整模式匹配的序列,如果匹配超过一次,其他参数值将 return 相关序列。

所以我没有其他公式可以解决我的问题。我可以使用调用文本搜索功能的复杂解决方案,但在那种情况下,我更愿意开发一个小的 c# 程序来处理文件。

我也尝试过 SEARCH,但组也没有公开,我认为唯一可以访问组的时间是使用文本 find/replace 对话框。有没有不依赖宏的 Calc 解决方案?

组用于 替换 参数。 可选。替换文本和对捕获组的引用。如果没有匹配项,则返回未修改的文本。

=REGEX(A1;"^([a-zA-Z\s]+)\s+([a-zA-Z0-9]+)\s+(.*?)\s*$";"All groups before the group containing figures: " & CHAR(10) & "The group containing figures: " & CHAR(10) & "The rest of the string: ")

结果:

All groups before the group containing figures: abcd efgh
The group containing figures: x23y
The rest of the string: mnop