regex - 从 Hive 中的字符串字段中提取多次出现的某些字符后的数字
问题描述
我正在尝试提取出现在 'dd ->' 之后的所有数字
我已经想出了如何在“dd ->”之后提取第一次出现的数字:regexp_extract(string, 'dd\\s->\\s([0-9]+)')
以及如何替换除数字之外的所有字符
regexp_replace(string, '[^0-9]+', '')
但未能找到解决方案
细绳:
(dd -> 2192, bar -> 1), (dd -> 2670, bar -> 1), (dd -> 2487, bar -> 3),(dd -> 2346, bar -> 3) kk=67457 ghyt=1628 nn=8.67.1
期望的输出:
2192 2670 2487 2346
谢谢!
解决方案
采用
dd ->( [0-9]+)|.
替换为 $1
。
请参阅正则表达式证明。
解释
--------------------------------------------------------------------------------
dd -> 'dd ->'
--------------------------------------------------------------------------------
( group and capture to \1:
--------------------------------------------------------------------------------
' '
--------------------------------------------------------------------------------
[0-9]+ any character of: '0' to '9' (1 or more
times (matching the most amount
possible))
--------------------------------------------------------------------------------
) end of \1
--------------------------------------------------------------------------------
| OR
--------------------------------------------------------------------------------
. any character except \n
如果需要,修剪第一个空格。
推荐阅读
- python - 当轴点是 bin 时,如何在 matplotlib 中对轴进行排序?
- python - Azure Run Python Code
- laravel-5 - Sourcetree 删除了我的文件
- argparse - 如何在python的类中使用argparse
- python - 如何以编程方式获取 GCP VM 实例的计费详细信息?
- hadoop - 比较集群之间的海量数据
- kotlin - Mockito:模拟间接注入的单例
- typescript - 如何在 Deno 中读取本地文件?
- xml - 如何在 XSLT 中使用大于函数进行标记出现
- spring - CAS & Spring Security --autoLogin