有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

正则表达式java将xpathstring拆分为块(分隔符[.+]??)

我有几个XPath表达式需要拆分。 范例

NODEA[NODEA1/NODEA11][NODEA2/NODEA21][NODEA3/NODEA31]/NODEB

方括号中的东西可能会多次出现。 我需要一个看起来像

NODEA[NODEA1/NODEA11]
NODEA[NODEA2/NODEA21]
NODEA[NODEA3/NODEA31]
NODEA/NODEB

我不知道正则表达式会是什么样子。 我想我得开始从右向左读了。 除aktual方括号帽子外的所有方形后背都将被删除? 也许我错了,有更好的解决办法

由于我不经常与regex合作,因此非常感谢您的帮助

非常感谢 当做 马里奥


共 (1) 个答案

  1. # 1 楼答案

    对于给定的示例,您可以使用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));
    }
    

    Demo Java