我需要帮助以正则表达方式解决。 The language of all strings defined over Σ = {X, Y, Z} with Y as the third letter and Z being the second last letter
。
答案 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)^*