2013-12-19 74 views
0

我相信下面的兩個正則表達式做同樣的事情:正則表達式:在使用前向斷言作爲條件

\ba{3}\b 

(?=\ba{3}\b).* 

雙方將匹配第二個字(AAA)只:

ZZZ AAA BBB

我想知道在性能或任何其他方面是否有任何區別,或者對於某些情況是否比其他方面更明智一個兒子。

編輯:

這是真的上述匹配不同的東西( 「AAA」 和 「AAA BBB」)的模式。我很抱歉,我的錯。

我原來的模式是:

(?=^a{3}$).* 
^a{3}$ 

和我的題目原來的例子是:

zzz 
aaa 
bbb 

喜歡,我認爲這兩種模式匹配 「AAA」。

我知道第二個更快。還有其他的區別嗎?

+1

第二個正則表達式匹配'aaa bbb' – Jerry

+0

該模式是不同的。但是,如果他們是相同的,第一個是最快的。另一件事,第一個模式與第一個字不匹配。 –

+0

感謝您的回答,夥計們。 – msoutopico

回答

0

談到正則表達式,三件事情浮現在腦海中:

  1. 匹配域
  2. 複雜
  3. 速度

任何正則表達式匹配所需字符串的簡單性與其速度有直接關係,因此使用較少的表達式可以更快速地搜索整個字符串電子文本。

有些表達式真的花了很多錢,所以當試圖選擇你的正則表達式的最佳選擇時,爲什麼你應該考慮更多?

在正則表達式^a{3}$上引擎會說:我真的這麼想!它很簡單,只有一個明顯的匹配域。

然而在第二個(?=^a{3}$).*引擎並不意味着它。它可能有這麼多的匹配案例,它具有積極的前瞻性並消耗更多的資源。

現在,你要去愛哪一個?

+0

謝謝,雷沃。現在很清楚。 – msoutopico

1

正如傑瑞在評論中指出的,第二個匹配aaa bbb。不過,我個人覺得這是簡單,因爲\ba{3}\b.*

+0

哦,嘿,你改變了你的用戶名和gravatar o.o – Jerry