2015-04-02 122 views
-1

我是新來的Perl語言 - 我一直在試圖理解下面的代碼Perl代碼的理解

if ($nextvalue !~ /^.+"[^ ]+ \/cs\/.+\sHTTP\/[1-9]\.[0-9]"|\/\/|\/Images\/fold\/1.jpg|\/busines|\/Type= OPTIONS|\/203.176.111.126/) 

能否請您幫助我們理解什麼是上面的意思?

+2

直到您在點擊發布按鈕之前查看預覽。 – rightfold 2015-04-02 08:41:17

+0

嗨,我只是想知道如果循環檢查條件 – Ravikanth 2015-04-02 09:11:15

回答

0

每當我不確定什麼一些神祕的正則表達式呢,我轉到Debuggex:

^.+"[^ ]+ \/cs\/.+\sHTTP\/[1-9]\.[0-9]"|\/\/|\/Images\/fold\/1.jpg|\/busines|\/Type= OPTIONS|\/203.176.111.126 

Regular expression visualization

Debuggex Demo

這是一個鐵路圖,每一個都有一個子接頭沿任意灰色軌跡的描述將匹配您正則表達式的字符串。由於您的條件使用!~意思是「不匹配」,那麼這些字符串將無法通過檢查。 Debuggex當然有問題(例如它顯示^,這意味着你將不得不知道這意味着字符串的開始,點和其他,空格顯示爲下劃線等),但它肯定有助於理解結構的表達,並可能給你一個想法作者的想法。

2

條件將成立時$nextvalue不是匹配以下regular expression

定期expressiion將匹配如果字符串

  • 要麼
    • 開始與至少一個字符,
    • 使用雙引號標記("),隨後在至少一個非
    • - 空格字符,
    • 後跟空格(),
    • 接着字符串 「/ CS /」,
    • 隨後的至少一個字符,
    • 接着空格和串HTTP /,
    • 隨後的從1到9包含數之一,
    • 隨後通過斑點
    • 隨後的從0到9的數字之一,
    • 接着雙引號("
  • 或包含兩個forwar d斜槓(//
  • 或包含sunstring 「/Images/fold/1.jpg
  • 或包含字符串 「/busines
  • 或包含字符串 「/Type= OPTIONS
  • 或包含字符串 「/203.176.111.126
+0

最後的替代方法是:'/ 203 any_char 176 any_char 111 any_char 126'(點不會被轉義)。 – Toto 2015-04-02 11:34:00

+0

@JESUISCHARLIE Nitpicking你的挑剔:「圖片」路徑中的點也是如此。 ^^ – DeVadder 2015-04-02 11:46:33