与正则表达式相关的混乱

时间:2012-11-13 04:44:45

标签: regex regular-language

我对正则表达式有这种困惑。如果两套 AB

(AB)* = A*B*

2 个答案:

答案 0 :(得分:5)

在正则表达式的背景下:是(AB)* = A * B *?

 No, (AB)* is not equals to A*B*

(AB)* means ABABABABAB......AB一系列AB(任意数量的时间)    A*B* means AAAA.....BBB......任意数量的A,后跟任意数量的B。在B之后,A不能出现。

交叉点 - 两者仅包括{ NULL string, AB }


示例:

假设:A = xyB = z

  (AB)* = xyzxyz.....xyz  
  A*B*  =  xyxyxyxy....zzzz....z

交叉点 - 两者仅包含{ NULL string, xyz}


示例:

假设 -

  A = {a, b},  
  B = {c, d}  

然后,

(AB)* =  ((a + b)(c + d))* , Its language  
L =  { ac, ab, acbd, acac, .....}   

注意:此语言中的所有字符串都是均匀的!

A*B*  =   (a + b)* (c + d)* , Its language     
  L = { a, b, c, d, ac, ad, bc, bd, acbd, addb,.........}   

注意:还包含奇数长度的字符串。

答案 1 :(得分:1)

(AB)* = A*B*  ?

没有。第一个是语言

 {void, ab, abab, ababab, ...}

第二个是语言

{void, a, b, aa, ab, bb, aaa, ...}