正则表达式 if then 模式匹配

regex if then pattern match

我有一个页面标题字符串,我想从中获取一个子字符串(品牌名称),但是它不会一直出现在同一个位置。

页面标题:

期望的输出:

我可以使用前两个获得品牌名称 (^[^|]+) 并使用 \|(.*).*(?=\|) 从后两个中获取品牌名称- 尽管它会获取 |还有。

但是,我需要在有 1 个管道时应用第一个正则表达式,在有 2 个管道时应用第二个正则表达式。有什么建议吗?

使用REGEXP_EXTRACT我们可以试试:

REGEXP_EXTRACT("Content | Brand Name A | Order now", "\s*([^|]+?)\s+\|[^|]+$")

这里是regex demo.