我暂时没有使用正则表达式或模式,我在分解多记录流中的单个记录时遇到问题。单个记录具有以下模式:
[field1][field2][field3]field4
每个字段都是可变长度的文本。记录模式在大字符串或文本流中一致地重复。如果我可以将较大的字符串/流拆分为一个字符串数组,每个元素包含一个记录,我可以使用简单的Java文本处理方法来提取字段。除了记录模式之外,字符串/流中的记录之间没有任何特定的分隔符。基本上,我想搜索每个记录中的特定子字符串,如果存在,则提取4个字段以进行后续处理。
答案 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);
}