将三个字母的字符串解析成正则表达式

时间:2015-05-21 12:07:25

标签: finite-automata automata state-machine automata-theory

我需要帮助以正则表达方式解决。 The language of all strings defined over Σ = {X, Y, Z} with Y as the third letter and Z being the second last letter

3 个答案:

答案 0 :(得分:2)

如果你被允许使用交集(这确实保留了合理性),我会简单地将其称为ΣΣYΣ* & Σ*ZΣ。如果您将其提供给Vcsn以对其进行规范化,则会得到:

In [1]: import vcsn

In [2]: vcsn.B.expression('([XYZ]{2}Y[XYZ]*)&([XYZ]*Z[XYZ])').derived_term().expression()
Out[2]: (X+Y+Z)ZY+(X+Y+Z)(X+Y+Z)Y(X+Y+Z)*Z(X+Y+Z)

derived_term的调用是从表达式构建自动机,最后一次调用expression是从这个自动机中提取一个有理表达式。

答案 1 :(得分:1)

如给定Σ= {X,Y,Z},你需要构造在其上定义的所有字符串的语言,其中Y为第三个字母,Z为第二个字母。

  

“ΣΣYΣ*ZΣ|ΣZY”将是必需的正则表达式。

Σ*所有字符串都是0个或更多来自Σ的串联。

如您所见,这里Y是第三个元素,Z位于倒数第二个位置。并且,Σ可以用任何X,Y或Z元素替换。

答案 2 :(得分:-1)

我认为正则表达式应该是这样的....

(x+y+z)zy(x+y+z)^*