6

apache pig とテキストの使用

hahahah.  my brother just didnt do anything wrong. He cheated on a test? no way!

「兄は何も悪いことをしていない」と一致させようとしています。

理想的には、「my brother just」で始まり、句読点 (文の終わり) または EOL で終わるものと一致させたいと考えています。

豚のドキュメントを見て、次に java.util.regex.Pattern へのリンクをたどると、使用できるはずだと思います

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

しかし、それは最後まで一致するようです。この試合を実行するための提案はありますか? 髪を抜く準備ができました。髪を抜くということは、Python ストリーミングに切り替えることを意味します。

4

3 に答える 3

4

デフォルトでは、量指定子は貪欲です。これは、それらが可能な限り一致することを意味します。この場合、最初の句読点までのみ一致させたいと考えています。言い換えれば、できるだけ一致させたくないということです。

?したがって、問題を解決するには、その直後にa を追加して、クアニティファーを貪欲にしないようにする必要があります。

私の兄弟はちょうど .*?\\p{Punct}
                  ^

ここでの使用は、?「0 または 1 に一致」を意味する数量詞としての使用とは異なることに注意してください。

于 2010-07-19T21:08:15.797 に答える
0

やってみました:.*(my brother just .*\\p{Punct})

あなたの式はその部分が文字列の先頭になることを望んでいるように見えますmy brotherが、あなたの例では文字列の途中にあるので、前のすべてを説明する必要がありますmy brother.

于 2010-07-19T21:07:06.717 に答える
0

あなたは一致しています .* これは... すべてです... [az]* を試して文字のみを一致させます

于 2010-07-19T21:09:34.043 に答える