我试图通过数据集中的一个字段进行解析。我试图过滤掉所有的元组与电影中包含括号“{”在标题的任何地方。当我运行这个程序时,我得到一个java错误,说我下面的不是有效的正则表达式。
raw_actors = LOAD 'hdfs:/user/XXX' USING org.apache.pig.piggybank.storage.CSVExcelStorage('\t') AS (name:chararray,movie_data:chararray,role:chararray);
movie_actors = FILTER raw_actors BY NOT(movie_data MATCHES '.*{.*');
当我取出表达式开头的.*时,它会运行,但没有任何内容会被过滤掉。。。对于编写一个不关心给定字符前后的正则表达式,有什么建议吗?
1条答案
按热度按时间bjp0bcyl1#
在java正则表达式中
{
character标记以名称表示的字符类的开始,例如。{Alpha}
. 对于java,您可以用反斜杠字符转义大括号字符(java也需要转义):\\{
.根据pig拉丁参考手册,您应该为“matches”操作符“usethejava formatforregular expressions”,该操作符链接到javadocforregular expressions
Pattern
,它描述正则表达式语法。这意味着您应该能够直接在“matches”操作符中应用转义。