如何在(networkx)图中查找描述为正则表达式的路径?

时间:2015-11-06 15:56:12

标签: python regex algorithm graph-algorithm networkx

给定可能的循环网络x图。我想搜索被描述为正则表达式的路径。正则表达式不会描述周期。一个例子是:

nodeA, [^nodeB]* [nodeC|nodeD]

在英语中,这应该对应于:我正在寻找一个以nodeA开头的路径,后跟零,一个或多个不是nodeB的节点,最后路径应该以nodeC或nodeD结束。

我想找到的示例路径是:

  • nodeA-> nodeX-> nodeC上
  • nodeA-> nodeX-> nodeY->联接的
  • nodeA-> nodeC上
  • ...

我在SO上发现了this相关帖子。然而,它是关于从两个节点之间的所有可能路径创建正则表达式。就我而言,我提供了一个正则表达式,并希望得到相应的路径。

我的不完整(可能不够)的方法是:

  1. 将正则表达式描述的路径拆分为从单个固定节点开始并以单个固定节点结束的部分。单个固定节点表示some_node(即没有特殊的正则表达式字符,如[],^,*,+等)。
  2. 使用常规网络x功能搜索此路径
  3. 如果找到路径,我会逐节点地查看它,并查看“当前”正则表达式部分(从正则表达式的开头开始)。
  4. 如果当前的正则表达式部分是[^some_node],那么我检查当前节点是否等于那个。如果它相等,我就会中断,如果没有,则推进节点和正则表达式部分。
  5. 如果当前正则表达式部分是some_node,即节点some_node必须在那里,那么我检查当前节点是否等于那个。如果是,我推进节点和正则表达式。如果没有,我只推进节点。
  6. 在为其他案例编写更多代码之前,例如[some_node]*[some_node]+我想检查此任务是否存在某些代码或算法。

    此任务是否有任何读取使用模块/ lib /示例代码等?
    如果没有,您是否知道现有的算法“正则表达式中的路径搜索正则表达式”? 如果没有,你能概括一个算法吗?

0 个答案:

没有答案