我有一个复杂的数据结构(称为twoDim),如下所示
[[Bolus Exposure (Impedance)Upright], [, Recumbent, Total], [, Upright Normal Recumbent Normal Total], [Normal], [Acid Time, 11.0 min, 0.0 min, 11.0 min], ]
[[Acid Exposure (pH), Upright], [Recumbent, Total], [, Upright Normal Recumbent Normal Total], [Normal], [Clearance pH : Channel 7]]
[[Postprandial Data], [, Postprandial Interval: 120 min]]
[[Reflux Study Summary], [Acid Exposure (pH), Upright, Recumbent, Total], [, Upright Normal Recumbent Normal Total], ]]
我想只提取[[Acid Exposure (pH), Upright], [Recumbent, Total], [, Upright Normal Recumbent Normal Total], [Normal], [Clearance pH : Channel 7]]
提取应基于" Recumbent"是其中一个内部数组中的第一个元素。
我的代码:
ArrayList<ArrayList> AcidExpMain = new ArrayList<ArrayList>();
ArrayList<ArrayList> temp = new ArrayList<ArrayList>();
Pattern tu1 = Pattern.compile("Acid Exposure \\(pH\\)");
Pattern tu2 = Pattern.compile("Recumbent");
for (List<String> row : twoDim) {
if (tu1.matcher(row.get(0)).matches() && tu2.matcher(row.get(0)).matches()) {
AcidExpMain.add((ArrayList<List<String>>) twoDim);
System.out.println("Success");
}
}
但是我没有抓住比赛。如果我分别评估每个匹配语句,他们就会完成自己的工作。那么我的错误在哪里?
我也试过
for (List<String> row : twoDim) {
if (tu2.matcher(row.get(0)).matches()) {
temp.add((ArrayList<List<String>>) twoDim);
System.out.println("Success"+temp.size());
for (ArrayList<String> t : temp) {
System.out.println(t+"Success");
if (tu2.matcher(temp.get(0).toString()).matches()) {
AcidExpMain.add((ArrayList<List<String>>) twoDim);
System.out.println("Success");
}
}
}
答案 0 :(得分:0)
您应该迭代结构并进行比较。
String[] rows = twoDim.split("[[");
for (String row : rows) {
String[] cols = row.split("[");
然后比较每列,以查看第一个单词是否为卧式。