gpt4 book ai didi

java - 在 Pig Latin(或一般的 java)中使用 FILTER 的正则表达式

转载 作者:可可西里 更新时间:2023-11-01 15:05:04 25 4
gpt4 key购买 nike

我正在尝试解析数据集中的单个字段。我正在尝试过滤掉标题中任何位置包含括号“{”的电影的所有元组。当我运行它时,我收到一个 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 '.*{.*');

当我删除表达式开头的 .* 时,它会运行,但不会过滤掉任何内容...对于编写不关心给定字符之前或之后出现的内容的正则表达式有什么建议吗?

最佳答案

在 Java 正则表达式中,{ 字符标记由名称表示的字符类的开始,例如{Alpha}。仅使用 Java,您可以使用反斜杠字符(Java 也需要对其进行转义)转义左大括号字符:\\{

根据 the Pig Latin Reference Manual ,您应该为“MATCHES”运算符“使用 Java format 作为正则表达式”,它链接到描述正则表达式语法的 Pattern 的 Javadoc。

这意味着您应该能够直接在“MATCHES”Pig Latin 运算符中应用转义。

movie_actors = FILTER raw_actors BY NOT(movie_data MATCHES '.*\\{.*');

关于java - 在 Pig Latin(或一般的 java)中使用 FILTER 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34051580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com