我有几个必须拆分的XPath表达式。 示例
NODEA[NODEA1/NODEA11][NODEA2/NODEA21][NODEA3/NODEA31]/NODEB
方括号中的东西可以是倍数。 我需要一个看起来像
的数组NODEA[NODEA1/NODEA11]
NODEA[NODEA2/NODEA21]
NODEA[NODEA3/NODEA31]
NODEA/NODEB
我不知道正则表达式是什么样的。 我想我必须从右到左开始阅读。 除了aktual方括号帽之外,方形支撑中的所有东西都要删除吗? 也许我错了,有一个更好的解决方案。
由于我不经常使用正则表达式,所以我们非常感谢您的帮助。
非常感谢 问候 马里奥
答案 0 :(得分:0)
对于您的示例,您可以通过使用alternation:
获取不同的部分匹配
NODEA
|
或\[[^]]+]
匹配例如[NODEA1/NODEA11]
,匹配一个空缺[
,然后不匹配]
,然后匹配]
|
或NODEB
您可以遍历匹配并将这些部分添加到类似ArrayList的集合中。
然后删除并捕获该列表的第一个条目String nodeA
,其余为NODEA
,剩下的就是原样。
对于集合中的其他部分,您需要添加nodeA
的值。然后,您可以遍历集合并将nodeA
添加到集合中的所有条目:
String regex = "NODEA|\\[[^]]+]|\\/NODEB";
String string = "NODEA[NODEA1/NODEA11][NODEA2/NODEA21][NODEA3/NODEA31]/NODEB";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(string);
ArrayList<String> ar = new ArrayList<String>();
while (matcher.find()) {
ar.add(matcher.group(0));
}
String nodeA = ar.remove(0);
for (int i = 0; i < ar.size(); i++) {
ar.set(i, nodeA + ar.get(i));
}