旋钮运动的正则表达式推导

时间:2017-10-31 03:30:28

标签: regex regular-language

关于给出的情况,我有以下问题,然后我们需要从中推导出正则表达式。

enter image description here

我现在需要做的是为A,B和C的旋钮运动描述这种语言的正则表达式。因为如果我要遍历C,我必须通过B,反之亦然,我知道B必须作为表达的一部分存在。

这是我的尝试:

ABC U ABA U BAB U BCB U CBA U CBC

简化它:

AB(C U A)U B(AB U CB)U CB(A U C)

我不完全确定我是否正确行事,因为我发现我是强暴的。我很难得到正则表达式,所以我会感激一些修正。

1 个答案:

答案 0 :(得分:0)

您的表达式不会捕获短序列(例如单个A)或重复字母。

我认为否定前瞻是最简单的写作方式。允许的转换是:

  • A后面没有C:A(?!C)
  • B任何地方:B
  • C后面没有A:C(?!A)

结合这些规则:

(A(?!C)|B|C(?!A))+