猪的正则表达式匹配

Nei*_*ner 6 regex hadoop apache-pig

使用apache猪和文本

hahahah.  my brother just didnt do anything wrong. He cheated on a test? no way!
Run Code Online (Sandbox Code Playgroud)

我试图匹配"我哥哥没做错什么."

理想情况下,我想要匹配任何以"我的兄弟"开头并以标点符号(句末)或EOL结尾的内容.

查看猪文档,然后按照java.util.regex.Pattern的链接,我想我应该可以使用

extrctd = FOREACH fltr GENERATE FLATTEN(EXTRACT(txt,'(my brother just .*\\p{Punct})')) as (txt:chararray);
Run Code Online (Sandbox Code Playgroud)

但这似乎匹配到行结束.有关执行此匹配的任何建议吗?我已经准备好把头发拉出来了,把头发拉出来,我的意思是转换成python流

Mar*_*ers 4

默认情况下量词是贪婪的。这意味着它们尽可能匹配。在这种情况下,您只想匹配第一个标点符号。换句话说,您希望尽可能少地匹配。

?因此,要解决您的问题,您应该通过在其后立即添加一个来使量化器变得非贪婪:

我哥哥只是 .*?\\p{Punct}
                  ^

请注意,此处的使用?不同于量词,量词的意思是“匹配零或一”。