正则表达式匹配1 2 3 4,5,6

时间:2011-09-14 14:57:56

标签: regex apache-pig

我的文件包含以下格式的行

1 2 3 4,5,6

前三个用空格分隔,最后三个用逗号分隔。作为一个例子,我给出了1-6,但值可以是字母数字值。有人可以用正则表达式帮助我匹配整行以提取6个值吗?

在Java中,我可以使用这个正则表达式 - line.split(“[,]”)并且它可以工作,但我使用的是Hadoop Pig,我需要将正则表达式传递给名为PigStorage()的方法,该方法需要正则表达式匹配整个字符串。

以下是猪的文件 -

“Pig确实通过matches关键字支持正则表达式匹配。它使用java.util.regex匹配,这意味着你的模式必须匹配整个字符串(例如,如果你的字符串是”hi fred“,你想找到”fred“ “你必须给出一种模式”。* fred“not”fred“)。”

所以我希望正则表达式匹配整行,并提取6个值。有什么帮助吗?

4 个答案:

答案 0 :(得分:1)

也许你需要在这里使用捕获组:

    Pattern p=Pattern.compile("(\\d)\\s(\\d)\\s(\\d)\\s(\\d),(\\d),(\\d)");
    Matcher m=p.matcher("1 2 3 4,5,6");
    int cnt=m.groupCount();
    for(int i=1;i<=cnt;++i)
    System.out.println(m.group(i));

答案 1 :(得分:0)

(\w+) (\w+) (\w+) (\w+),(\w+),(\w+)

可能?

答案 2 :(得分:0)

试试这个:

([^ ]+){4}([^,]+){2}

答案 3 :(得分:0)

怎么样:

\S+ \S+ \S+ \S+,\S+,\S+