正则表达式返回空白输出Hive

时间:2015-04-23 14:05:33

标签: regex hadoop hive

我正在设计一个正则表达式来匹配以下三种结构之一:

伪代码:

number.number.number.number e.g. 102.100.1.1
number.number.number e.g. 1.2.4
number.number. e.g. 1.2

到目前为止我的正则表达式看起来像这样:

\d{1,3}\\.\d{1,3}\\.\d{1,3}\\.\d{1,3}|\d{1,3}\\.\d{1,3}\\.\d{1,3}|\d{1,3}\\.\d{1,3}}

我正在运行以下查询来测试它:

select 
    regexp_extract('172.1.1.1', '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|\d{1,3}\.\d{1,3}\.\d{1,3}|\d{1,3}\.\d{1,3}') 
from 
    dual 

Regex101 suggests this should workas does RegExr

然而,结果是空白的。这里有什么被忽视的,为什么这不起作用?

1 个答案:

答案 0 :(得分:1)

这可能是因为你使用'\\。代替 '\。'。使用'\\。',它会搜索以下模式:“\。”而不是“。”。

试试这个:

render :partial => "delete_from_page"

编辑:

您还应该考虑在正则表达式中添加分隔符。 使用此正则表达式,如果在“1234.5678”上运行,它将获得“234.567”。 这很容易解决:

\d{1,3}(\.\d{1,3}){1,3}

然后只从输出中获取第二组