Perl代码理解

时间:2015-04-02 08:39:58

标签: regex perl

我是perl语言的新手 - 我一直在努力理解下面的代码

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

请您帮助我们了解上述内容是什么意思?

2 个答案:

答案 0 :(得分:2)

$nextvalue NOT regular expression后匹配时,

条件为真。

如果该字符串

,则常规表达将匹配
  • 任一
    • 以至少一个字符
    • 开头
    • 后跟双引号("),
    • 后跟至少一个非空白字符
    • 后跟空格(),
    • 后跟字符串“/ cs /”,
    • 后跟至少一个字符,
    • 后跟空格和字符串HTTP /,
    • 后跟一个从1到9的数字,
    • 后跟点
    • 后跟0到9之间的一个数字,
    • 后跟双引号("
  • 或包含两个正斜杠(//
  • 或包含sunstring“/Images/fold/1.jpg
  • 或包含子字符串“/busines
  • 或包含子字符串“/Type= OPTIONS
  • 或包含子字符串“/203.176.111.126

答案 1 :(得分: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当然有问题(例如它显示^,这意味着你必须知道这意味着字符串的开头,点和其他的相同,空格显示为下划线等等)但它肯定有帮助了解表达式的结构,并可能让您了解作者的想法。