1

我有一个字段,其中的值如下所示:

场地
pos1-123|pos2 xyx123|pos3-abc|pos4x350

我想使用 REGEXP_EXTRACT 将字段分成四个不同的计算字段,如下所示:

  • 计算字段 1 : pos1-123,
  • 计算字段 2:pos2 xyx123
  • 计算字段 3:pos3-abc
  • 计算字段 4:pos4x350

我设法通过使用以下方法自行提取了计算字段 1:

> REGEXP_EXTRACT(Field, '^//|(//|[[:alnum:]]+)')

但是,我被困在遍历字符串的其余部分。

4

1 回答 1

1

您可以使用以下正则表达式:

REGEXP_EXTRACT(Field, '^([^|]+)')
REGEXP_EXTRACT(Field, '^[^|]+\\|([^|]+)')
REGEXP_EXTRACT(Field, '^(?:[^|]+\\|){2}([^|]+)')
REGEXP_EXTRACT(Field, '^(?:[^|]+\\|){3}([^|]+)')

详情

  • ^- 字符串的开始
  • (?:[^|]+\\|){3}- 出现三个 ( {3})
    • [^|]+- 任何一个或多个字符,除了|
    • \|- 一个|字符
  • ([^|]+)- 捕获组 1:除 . 之外的任何一个或多个字符|
于 2021-04-19T22:02:42.030 回答