2015-04-02 121 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