如何使用RE2正则从黑盒输出的特定格式字符串中提取目标子串?
问题需求与正则实现疑问
字符串格式说明
我有一个来自黑盒的字符串,格式为@@@substring1@@@substring2:
substring1可为空或非空,substring2始终非空@@@是分隔符,可通过黑盒设置修改substring1和substring2内部均不包含@@@
提取目标
需要提取字符串中的目标子串:
- 从
@@@substring1@@@substring2中提取substring1 - 从
@@@@@@substring2(即substring1为空的情况)中提取substring2
限制条件
黑盒仅支持使用RE2正则处理字符串,无法使用cut、sed、awk等外部工具,且不支持正向/反向预查断言((?=re)、(?!re)、(?<=re)、(?<!re))及\K语法。
当前尝试的正则问题
我尝试用正则@@@([^@]+),但存在问题:
- 处理
@@@@@@substring2时,会生成1个匹配及1个捕获组,符合需求 - 处理
@@@substring1@@@substring2时,会生成2个匹配及各1个捕获组,不符合需求——我仅需1个匹配
请问仅用正则能否实现需求?
内容的提问来源于stack exchange,提问作者AntonioK
相关产品推荐
相关产品推荐

