如何使用 RE2 正则表达式匹配两个字符串之间的子字符串?
How to match substring between two strings with RE2 regex?
我需要从以下字符串中提取 "Design Brands > " 和第一个管道 (|) 字符之间的子字符串:
"T-shirts|Brands > Port & Company|Design Brands > Montana Griz|Designs > TeamLB Griz > MTG31|T-shirts > TeamLB|T-shirts > Montana Griz"
这是在 google 工作表函数中,所以我必须使用 Go 的 RE2 语法
我希望下面的表达式能够工作
Design Brands > (.*)\|
但是,表达式匹配字符串中直到最后一个竖线的所有内容
“Montana Griz|Designs > TeamLB Griz > MTG31|T-shirts > TeamLB
”
而不是直到管道在字符串中第一次出现的所有内容。我似乎无法弄清楚如何在捕获组中隔离 "Montana Griz"。
要么让点变得懒惰:
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
([^|]*)
是匹配所有内容的技巧,但包括出现的第一个管道。
我需要从以下字符串中提取 "Design Brands > " 和第一个管道 (|) 字符之间的子字符串:
"T-shirts|Brands > Port & Company|Design Brands > Montana Griz|Designs > TeamLB Griz > MTG31|T-shirts > TeamLB|T-shirts > Montana Griz"
这是在 google 工作表函数中,所以我必须使用 Go 的 RE2 语法
我希望下面的表达式能够工作
Design Brands > (.*)\|
但是,表达式匹配字符串中直到最后一个竖线的所有内容
“Montana Griz|Designs > TeamLB Griz > MTG31|T-shirts > TeamLB
”
而不是直到管道在字符串中第一次出现的所有内容。我似乎无法弄清楚如何在捕获组中隔离 "Montana Griz"。
要么让点变得懒惰:
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
([^|]*)
是匹配所有内容的技巧,但包括出现的第一个管道。