用于树结构的正则表达式? - java

是否有用于查找和修改树结构的正则表达式等效项?我正在寻找简洁的迷你语言(如perl regex)。

这是一个示例,可以阐明我在寻找什么。

<root>
  <node name="1">
    subtrees ....
  </node>
  <node name="2">
    <node name="2.1">
     data
    </node>
    other subtrees...
  </node>
</root>

上面的树上可能执行的操作是“将节点2.1的子树移动到
节点1的子树。“操作的结果可能类似于。

<root>
  <node name="1">
    subtrees ....
    <node name="2.1">
     data
    </node>
  </node>
  <node name="2">
    other subtrees...
  </node>
</root>

搜索和替换操作,例如,找到所有带有至少2个子节点的节点,找到其数据以“a”开头的所有节点,如果子树具有至少2个其他兄弟节点,则将其替换为“b”,等等。

对于唯一尺寸跨字符串长度的字符串,我们可以使用正则表达式执行许多上述操作(或其一维等效项)。我想知道树木是否有等同物。 (而不是单个正则表达式,您可能需要编写一组转换规则,但这没关系)。

我想知道是否有一些简单的迷你语言(不是regex per.se,而是可以通过库等方式访问regex的东西)。执行这些操作?最好是作为python库。

参考方案

斯坦福大学的TSurgeon和Tregex能够做到这一点。您可以从http://nlp.stanford.edu/software/tregex.shtml下载该库

Java中的<<或>>>是什么意思? - java

This question already has answers here: Closed 7 years ago. Possible Duplicate: What does >> and >>> mean in Java?我在一些Java代码中遇到了一些陌生的符号,尽管代码可以正确编译和运行,但对于括号在此代码中的作用却感…

菱形运算符<>是否等于<?> - java

我在util.TreeSet类中发现,其中一个构造函数正在使用具有空泛型类型的新TreeMap调用另一个构造函数。 public TreeSet(Comparator<? super E> comparator) { this(new TreeMap<>(comparator)); } new TreeMap<>是什么意思…

与哪些运算符>>兼容 - java

我这里没有什么代码int b=3; b=b >> 1; System.out.println(b); 它可以完美工作,但是当我将变量b更改为byte,short,float,double时,它包含错误,但是对于变量int和long来说,它可以完美工作,为什么它不能与其他变量一起工作? 参考方案 位移位运算符(例如>>)与任何整数类型兼…

通过Maven编译器插件不会发生有限的包含和排除 - java

我正在使用3.6.0版的maven编译器插件,在此我们只想在特定文件夹中编译一个文件,而在该位置编译所有其他文件。例如:在文件夹应用程序中有14个文件,从那我只希望编译1个文件,但它编译了所有文件,如果我要排除,则它也不起作用。 <sourceDirectory>${basedir}/../src/java</sourceDirectory…

Java中的“ <<”运算符 - java

最喜欢的语句来自Java的Character类:(1 << Character.PARAGRAPH_SEPARATOR)) >> type PARAGRAPH_SEPARATOR是字节,type是整数。这句话中的操作员,他们做什么?如何以及在哪里可以使用这些运算符?这是oracles java.lang.Character文档。该类中…