2015-02-23 96 views
0

更换正则表达式的一部分,我一直试图做的蜂巢REGEXP_REPLACE下列操作没有成功:如何在蜂巢

转化:

/foo1/foo2/foo3-bar1/p-115390-20.html' or '/foo1/foo2/foo3-bar1/p-115390-35.html 

到:/foo1/foo2/foo3-bar1/p-115390.html

知道我有我想要转换的 /foo1/foo2/foo3-bar1/p-115390.html这样的网址: /foo1/foo2/foo3-bar1/p-115390.html停留/foo1/foo2/foo3-bar1/p-115390.html

我尝试没有成功使用方法:

SELECT regexp_replace('/foo1/foo2/foo3-bar1/p-115390-20.html', 'p\-\d+(\-\d+\).html', '') 

号115390或115390-20可以是任意数量的课程。

+0

可能重复【如何做MySQL中的正则表达式替换(HTTP:/? /stackoverflow.com/questions/986826/how-to-do-a-regular-expression-replace-in-mysql) – lnrdo 2015-02-23 18:21:57

+0

嗨,这是一个Hadoop问题,希望有所帮助。没有涉及MySQL或其他DBMS。只有Hadoop。谢谢 – 2015-02-24 09:39:03

+0

对不起,不知道为什么我错过了问题标签。 – lnrdo 2015-02-24 09:49:36

回答

0

找到了答案:SELECT REGEXP_REPLACE( '/ foo1/foo2的/ foo3-BAR1 /对 - 115390-20.html','(P + \ - + [0-9] +)\ - + [ 0-9] + \ + HTML $”, '$ 1 \ html的')再次

感谢您的帮助

0

这是一个ORACLE问题? (您没有标记您的DBMS)你可以试试这个

SELECT REGEXP_REPLACE(COLUMNNAME,'(\/foo1\/foo2\/foo3\-bar1\/p-\d+)\-\d+\.html','\1.html') 

SELECT REGEXP_REPLACE('/foo1/foo2/foo3-bar1/p-115390-20.html','(\/foo1\/foo2\/foo3\-bar1\/p-\d+)\-\d+\.html','\1.html') 

最后,短版,那将有可能做的一样好。这取决于你的匹配有多严格。

SELECT REGEXP_REPLACE('/foo1/foo2/foo3-bar1/p-115390-20.html','(p-\d+)\-\d+\.html','\1.html') 
+0

不幸的是在Hadoop上工作... – 2015-02-24 09:39:54