2013-02-20 54 views

回答

1

man expr

expr1 : expr2 
     The ``:'' operator matches expr1 against expr2, which must be a 
     regular expression. The regular expression is anchored to the 
     beginning of the string with an implicit ``^''. expr expects 
     "basic" regular expressions, see re_format(7) for more informa- 
     tion on regular expressions. 

@只是@,因爲它在正則表達式沒有任何特殊含義。因此,

expr [email protected]@ : "[email protected][^@]*@" 

會成功,並輸出6(它是匹配字符的數量);而

expr [email protected]@ : "[email protected][^@]*@" 

將輸出0$?返回失敗代碼,因爲它不能匹配任何東西。

如果您對正則表達式不熟悉,則示例中給出的意思是:下劃線(_)後面夾着任意數量的非符號字符後面的兩個符號(@)。

+0

感謝您的長時間解釋,我試圖從正則表達式引用中找到'@',但失敗。它似乎只是$ VERSION號碼的驗證,這沒有意義... – krime 2013-02-20 04:36:24

+0

@krime:只是補充一點,'[^ @] *'意味着「更多字符是零*不是* @」。 – cdarke 2013-02-20 11:45:43

1

這只是一個文字@@在正則表達式中沒有特殊含義,雖然它可能在$VERSION

匹配「下劃線後跟@,後跟零個或多個非@字符後跟@」。

+0

我試了一些測試,那是真的。謝謝〜! – krime 2013-02-20 04:09:31