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

标签 java python c regex tree-structure

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

这里有一个例子可以阐明我在寻找什么。

<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 本身,而是可以通过库等与 regex 一样访问的东西)。执行这些操作?最好是作为 python 库。

最佳答案

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

关于java - 树结构的正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/875100/

相关文章:

java - 如何使用 Java 下载/上传 Azure B2C TrustFrameworkPolicy

java - 将字符串拆分为矩阵或表格并存储到 ArrayList 中

python - 如何重现 Ridge(normalize=True) 的行为?

java - 如何设置每天上午 9 点到 11 点和下午 5 点到 6 点的 cron 作业时间

java - @RequestMapping是如何实现支持灵活签名的

python - SQLAlchemy - 在另一个实例 __init__ 中创建一个实例

python - 用python解析棘手的字符串

c - 用 C 写一个基本的 traceroute 脚本

c - 这个反转位序函数是怎么回事?

c - GValue 初始化/终结的必要性