2012-11-29 130 views
3

我在這裏讀了「瀏覽器的工作」的文章:How Browsers Work(這是一個偉大的閱讀。)這個正則表達式簡化是否正確?

但在一個點上,他們提到這一點作爲他們的語法規則定義一個整數:

INTEGER :0|[1-9][0-9]* 

是嗎,還是不完全一樣(和更簡單)來寫:

INTEGER :[1-9]*[0-9] 

我想不出一個情況是不符合這兩個規則,也沒有理由的第一條規則是首選。

是否有理由包含簡單的基本情況(如0),還是僅僅是迂迴?

回答

2

這兩個表達式是不同的:第一個將採取101,但第二個不會。書中的表達式在匹配整數時相當不錯,但不允許前導零。

+1

您將接受打我30秒,並獲得一個恭喜upvote以某種方式挑選相同的測試輸入。 :) –

2

它們是不一樣的,因爲我的簡化只能包含一個零,並且只有它是一個尾隨零。例如。這種情況與簡化規則不匹配:

101 
+0

這很有趣 - 我們都選擇了'101'作爲例子:) – dasblinkenlight