如何使用 RE2 正则表达式匹配两个字符串之间的子字符串



我需要提取"Design Brands>"和第一个后续pipe(|(之间的子字符串以下字符串中的字符:

"T-shirts|Brands > Port & Company|Design Brands > Montana Griz|Designs > TeamLB Griz > MTG31|T-shirts > TeamLB|T-shirts > Montana Griz"

这是在谷歌表格函数中,所以我必须使用 Go 的 RE2 语法

我希望以下表达式会起作用

Design Brands > (.*)|

但是,表达式将所有内容与字符串中的最后一个管道匹配"Montana Griz|Designs > TeamLB Griz > MTG31|T-shirts > TeamLB"而不是直到字符串中第一次出现管道的所有内容。我似乎无法弄清楚如何在捕获组中隔离"蒙大拿格里兹"。

要么让点变懒:

Design Brands > (.*?)|

或者,如果 RE2 不支持懒点,则使用此版本:

Design Brands > ([^|]*)|

演示

第二种模式表示:

Design Brands >    match "Design Brands > "
([^|]*)            then match and capture any character which is NOT pipe
|                 finally match the first pipe

([^|]*)是将所有内容匹配到(但包括出现的第一个管道(的技巧。