【发布时间】:2015-12-16 19:44:15
【问题描述】:
我试图从中捕获以下字符串(我们称之为output):
ltm pool TEST_POOL {
Some strings
above headers
records {
baz:1 {
ANY STRING
HERE
}
foobar:23 {
ALSO ANY
STRING HERE
}
}
members {
qux:45 {
ALSO ANY
STRINGS HERE
}
bash:2 {
AND ANY
STRING HERE
}
topaz:789 {
AND ANY
STRING HERE
}
}
Some strings
below headers
}
考虑将output 的每一行用典型的换行符分隔。为了这个问题,我们将records 和members 称为“标题”,将baz、foobar、qux、bash 和topaz 称为“标题”。我正在尝试在 Java 中制定一个正则表达式,它将在查找循环中捕获给定标题括号之间的所有标题。例如,假设我们要使用以下代码查找标题 members 的所有标题:
String regex = TODO; // members\\s\\{ contained in regex
final Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(output);
while (matcher.find()) {
System.out.println(matcher.group(1));
}
输出应该是...
qux
bash
topaz
并且应该排除baz 和foobar,因为它们包含在不同“标题”的括号内。可以有任意数量的标题和任意数量的标题。对于制定正则表达式来解决此问题的一些帮助将不胜感激。
【问题讨论】: