hadoop配置单元等价于python正则表达式

vwkv1x7d  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(342)

我有一些文本需要用hadoop解析。我用Hive来做这个。我相信hive使用java正则表达式。我已经编写了一个python正则表达式来完成这项工作。下面是一个例子。我想捕获隐藏在文本块中的某个标记的值。斑点:

eufebuWT.tz=12&ufdneuhnf

python正则表达式:

a=re.search(r'(?s)(?<=WT.tz=).+?(?=(&|$))'
a.group()
>12

如果我把它插入hive的regexp\u extract()中,我会得到一个错误。如何将其翻译成与java兼容的regex?

gstyhher

gstyhher1#

没关系,只是错过了一次逃跑。

p3rjfoxz

p3rjfoxz2#

如果你打算抓住 12 输入字符串中的值(我假设从您拥有的正则表达式中),您最好使用一个取反的字符类 [^&] 匹配*任何字符(即使是换行符,因此,不需要在 (?s) )而不是 & .

(?<=WT[.]tz=)[^&]+

参见regex演示。请注意,基于捕获组的解决方案在这里是最好的:

WT[.]tz([^&]+)

但是,这取决于在hadoop中实现什么更容易。
如果您仍然需要知道它是否是字符串的结尾,请将捕获组保留在末尾:

(?<=WT[.]tz=)[^&]+($|&)

我将点 Package 到一个character类中,这样它就被视为一个文本句点,而不是任何字符,而是换行符子模式。

相关问题