首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bigquery正则表达式在多个空格后提取数字

Bigquery正则表达式在多个空格后提取数字
EN

Stack Overflow用户
提问于 2021-07-27 07:04:44
回答 3查看 449关注 0票数 1

请您帮助使用以下示例行中的regexp_extract数字:

  1. 11BARIIOTA0292DEBORAH (空间) OLLA (空间) JENNY (长-多空间) 0000001242202173171 (space)
  2. 11SBADIOTA0300MICHELLE (空间) MARGARETE (长-多空间) 0040170225 (space)
  3. 11NITYIOTA0300SYAHLA (空间) RYAN (长-多个空间)613821914423 (空间)

转入:

  1. 0000001642202173171
  2. 0040170225
  3. 613821914423

fyi:长-多个空间大约是40-50个空间。

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-07-27 13:31:15

考虑以下方法

代码语言:javascript
复制
select array_reverse(split(trim(col_name), ' '))[offset(0)]
from your_table         

如果应用于问题中的样本数据,则输出为

票数 1
EN

Stack Overflow用户

发布于 2021-07-27 08:52:23

对于以一个或多个空格结束的行,“长-多空间”为40-50个空格。

这里有一些不同的匹配表达,取决于你的需要.

匹配:^.* {40,50}(\d+) +$

替换: Group1

匹配:^[A-Z\d]+(?: [A-Z]+){1,2} {40,50}(\d+) +$

替换: Group1

使用regexp_extract,我认为语法看起来更像..。

regexp_extract(filename,'^.* {40,50}(\d+) +$', 1)

regexp_extract(filename,'^[A-Z\d]+(?: [A-Z]+){1,2} {40,50}(\d+) +$', 1)

{1,2}是与1名或-2名(如Line1上的OLLA和JENNY )匹配的名称。

使用{1,9}匹配这些空格分隔的名称中的1-9个。

(对于“长-多个空格”,{40,50}与此相同)

票数 1
EN

Stack Overflow用户

发布于 2021-07-27 08:21:28

您可以将字符串转换为简单的空格分隔值,然后在该结果字符串的基础上使用regexp_extract提取数值。

代码语言:javascript
复制
select REGEXP_REPLACE(REGEXP_REPLACE("11BARIIOTA0292DEBORAH                  OLLA  JENNY                                                                                             0000001242202173171","  ",""),'[^0-9 ]','');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68540344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档