我正在尝试使用regex模式匹配输入文件中的一行

kpbwa7wx  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(301)

我有一个输入文件,其中的行包含10列,格式如下:

String,Only Integer,Only String,Alpha Numeric,Alpha Numeric of length 7,
Alpha Numeric of length 7(with 1,3,4 as characters and 2,5,6,7 as digits),
Decimal(range from 0.4 to 0.8),Decimal,Only String,Only Integer of length 5

所有10列都在同一行中。我尝试使用regex模式只获取第7、8、9列。我在试这个正则表达式。有人能帮忙吗。

private static class RegexParser{
   private static final String regex = "(.*),(^[0-9]*$),(^[a-z][A-Z]*$),"
              + "(^[a-z][A-Z][0-9]*$),(^[a-z][A-Z][0-9]{7}*$),"
              + "([a-z][0-9][a-z][a-z][-9][0-9][0-9]{7}*$),([0].[4-8]*$),"
              + "(^[0-9]+(.[0-9][0-9]?)?),(.*),(^[1-9]{5}*$)";
                private static final Pattern pattern = Pattern.compile(regex);

                private Matcher matcher = pattern.matcher("");

                public String parse(String line) {
                    matcher = matcher.reset(line);
                    if (matcher.matches()) {
                        String m = matcher.group(7) + matcher.group(8) + matcher.group(9);
                        return m;
                    }
                    return null;
                }
            }
ccrfmcuu

ccrfmcuu1#

在regex中匹配组对于您的场景来说似乎有些过分了。使用csv解析器,或者如果值都是逗号分隔的,并且没有值包含逗号,那么像这样简单的方法可能就可以做到这一点。

String[] elements = line.split(",");

return elements[7] + elements[8] + elements[9];

相关问题