正则表达式 if then 模式匹配
regex if then pattern match
我有一个页面标题字符串,我想从中获取一个子字符串(品牌名称),但是它不会一直出现在同一个位置。
页面标题:
- 品牌名称 A |立即预订
- 品牌名称 B |在这里订购
- 内容 |品牌名称 A |现在订购
- 内容 |品牌名称 7 |点击这里
期望的输出:
- 品牌名称 A
- 品牌名称 B
- 品牌名称 A
- 品牌名称 7
我可以使用前两个获得品牌名称
(^[^|]+)
并使用 \|(.*).*(?=\|)
从后两个中获取品牌名称- 尽管它会获取 |还有。
但是,我需要在有 1 个管道时应用第一个正则表达式,在有 2 个管道时应用第二个正则表达式。有什么建议吗?
使用REGEXP_EXTRACT
我们可以试试:
REGEXP_EXTRACT("Content | Brand Name A | Order now", "\s*([^|]+?)\s+\|[^|]+$")
这里是regex demo.
我有一个页面标题字符串,我想从中获取一个子字符串(品牌名称),但是它不会一直出现在同一个位置。
页面标题:
- 品牌名称 A |立即预订
- 品牌名称 B |在这里订购
- 内容 |品牌名称 A |现在订购
- 内容 |品牌名称 7 |点击这里
期望的输出:
- 品牌名称 A
- 品牌名称 B
- 品牌名称 A
- 品牌名称 7
我可以使用前两个获得品牌名称
(^[^|]+)
并使用 \|(.*).*(?=\|)
从后两个中获取品牌名称- 尽管它会获取 |还有。
但是,我需要在有 1 个管道时应用第一个正则表达式,在有 2 个管道时应用第二个正则表达式。有什么建议吗?
使用REGEXP_EXTRACT
我们可以试试:
REGEXP_EXTRACT("Content | Brand Name A | Order now", "\s*([^|]+?)\s+\|[^|]+$")
这里是regex demo.