我的文件包含以下格式的行
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个值。有什么帮助吗?
答案 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+