是否有 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
假设我有这样的字符串:
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