我在apache配置单元中遇到了一段代码,比如regexp\u extract(input,“[0-9]*”,0),有人能给我解释一下这段代码的作用吗?谢谢
zd287kbt1#
上面的答案部分是错误的。 regexp_extract('test911', '[0-9]*', 0) 一定会还911的。我们以前从未指定字符串的开头 [0-9]*
regexp_extract('test911', '[0-9]*', 0)
[0-9]*
3duebb1j2#
正则表达式 regexp_extract(input, '[0-9]*', 0) 将给出输入字符串中的所有起始数字。如,
regexp_extract(input, '[0-9]*', 0)
select regexp_extract('442323test41234', '[0-9]*', 0) ==> 442323 select regexp_extract('44test41234', '[0-9]*', 0) ==> 44 select regexp_extract('test41234', '[0-9]*', 0) ==> 1
但这不是提取起始数字的最佳方法。以下是可读性更强的格式:
select regexp_extract(input, '^([0-9]+).*?$', 1)
上面的正则表达式表示,列出字符串中开始的所有数字,忽略其余数字。
7gs2gvoe3#
从hive manual ddl中,它返回使用模式提取的字符串。例如。 regexp_extract('foothebar', 'foo(.*?)(bar)', 2) 退货 bar .这个 index 参数是捕获组,它是一个可以采用以下值的整数:0:整个比赛,在我的例子中是 foothebar 1:第一组,我的例子是 the 第二组,在我的例子中是 bar 第n组。如果n大于regexp中定义的实际组数,则配置单元查询将失败。在你的例子中, regexp_extract(input, '[0-9]*', 0) ,您正在为您的列查找由 input 从一个数值开始。以下是几个例子: regexp_extract('9eleven', '[0-9]*', 0) ->退货9 regexp_extract('9eleven', '[0-9]*', 1) ->查询失败 regexp_extract('911test', '[0-9]*', 0) ->退货911 regexp_extract('911test', '[0-9]*', 1) ->查询失败 regexp_extract('eleven', '[0-9]*', 0) ->返回空字符串 regexp_extract('test911', '[0-9]*', 0) ->返回空字符串
regexp_extract('foothebar', 'foo(.*?)(bar)', 2)
bar
index
foothebar
the
input
regexp_extract('9eleven', '[0-9]*', 0)
regexp_extract('9eleven', '[0-9]*', 1)
regexp_extract('911test', '[0-9]*', 0)
regexp_extract('911test', '[0-9]*', 1)
regexp_extract('eleven', '[0-9]*', 0)
3条答案
按热度按时间zd287kbt1#
上面的答案部分是错误的。
regexp_extract('test911', '[0-9]*', 0)
一定会还911的。我们以前从未指定字符串的开头[0-9]*
3duebb1j2#
正则表达式
regexp_extract(input, '[0-9]*', 0)
将给出输入字符串中的所有起始数字。如,
但这不是提取起始数字的最佳方法。以下是可读性更强的格式:
上面的正则表达式表示,列出字符串中开始的所有数字,忽略其余数字。
7gs2gvoe3#
从hive manual ddl中,它返回使用模式提取的字符串。例如。
regexp_extract('foothebar', 'foo(.*?)(bar)', 2)
退货bar
.这个
index
参数是捕获组,它是一个可以采用以下值的整数:0:整个比赛,在我的例子中是
foothebar
1:第一组,我的例子是the
第二组,在我的例子中是bar
第n组。如果n大于regexp中定义的实际组数,则配置单元查询将失败。在你的例子中,
regexp_extract(input, '[0-9]*', 0)
,您正在为您的列查找由input
从一个数值开始。以下是几个例子:
regexp_extract('9eleven', '[0-9]*', 0)
->退货9
regexp_extract('9eleven', '[0-9]*', 1)
->查询失败regexp_extract('911test', '[0-9]*', 0)
->退货911
regexp_extract('911test', '[0-9]*', 1)
->查询失败regexp_extract('eleven', '[0-9]*', 0)
->返回空字符串regexp_extract('test911', '[0-9]*', 0)
->返回空字符串