使用Java从字符串中的背对背记录中提取字段

时间:2014-07-10 16:46:00

标签: java regex string

我暂时没有使用正则表达式或模式,我在分解多记录流中的单个记录时遇到问题。单个记录具有以下模式:

[field1][field2][field3]field4

每个字段都是可变长度的文本。记录模式在大字符串或文本流中一致地重复。如果我可以将较大的字符串/流拆分为一个字符串数组,每个元素包含一个记录,我可以使用简单的Java文本处理方法来提取字段。除了记录模式之外,字符串/流中的记录之间没有任何特定的分隔符。基本上,我想搜索每个记录中的特定子字符串,如果存在,则提取4个字段以进行后续处理。

1 个答案:

答案 0 :(得分:0)

尝试

public void findFields() {
    String str = "[field1][field2][field3]field4";
    Pattern pattern = Pattern.compile("\\[(.*?)\\]");
    Matcher matcher = pattern.matcher(str);
    List<String> fields = new ArrayList<String>();
    while(matcher.find()) {
        fields.add(matcher.group(1));
    }
    matcher.replaceAll("");
    StringBuffer tail = new StringBuffer();
    matcher.appendTail(tail);
    fields.add(tail.toString());
    System.out.println(fields);
}