再帰を使用して、タグと対応する終了タグを見つけることができます。
public class TagMatching {
public static void main(String[] args) {
List<String> lines = Arrays.asList("yes 12 /12 /yes /n",
"yes 12 /12 /yes",
"yes 12 a b /12 /yes",
"yes 12 c /12 /yes");
for (String line : lines) {
boolean valid = validate(Arrays.asList(line.split(" ")));
System.out.println("valid = " + valid);
}
}
public static boolean validate(List<String> tags) {
if (tags.size() == 0) {
return true;
}
String first = tags.get(0);
String last = tags.get(tags.size() - 1);
if (last.equals("/" + first)) {
return validate(tags.subList(1, tags.size()-1));
}
return false;
}
}