2012-12-08 15 views
3

快速问题, if a是一个正则表达式然后它是真的a* = (a*)*与(a *)*相同*

(a*)*有效表达式?如果是这样,那么任何人都可以解释为什么它与a*相同?我在此表示歉意,但我无法通过Google找到任何内容。

+1

是的,它们是相同的(理论上)。 – nhahtdh

+0

我说它在理论上是一样的,但是由正则表达式引擎编译的代码可能在它们之间不同,并且a *在这种情况下比(a *)*更有效,因为(a *)*会引入另一个级别回溯。 – nhahtdh

+0

@nhahtdh:Lex工具是否未将'(a *)*'优化为'a *'?因为最小化应该工作? –

回答

7

,a*=(a*)*是相同的。两者都会生成相同的语言,即包含null的任何数字a。

L(a*) = {^, a, aa, aa...... } = L ((a*)*)

(a*)*有效的表达?

是的,这个表达式叫做REGULAR-EXPRESSION(我看到你错过了标签)。任何正则语言(RL)都可以用正则表达式(RE)表示。代表RL的字母表方式。

为什么它是一样的?

*表示重复任意次数(包括0次)。

a*表示0a,1a,2a或任何数量的a。

(a *)*表示在任何时间(包括0次)中设置的所有字符串a*的重复。

因为L(a*)意味着所有字符串都包含使用。它的每套晚餐都由a的字符串组成。和L((a*)*)是一样的。

+1

+1简单明了的解释 –

相关问题