Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex perl正则表达式/x开关_Regex_Perl - Fatal编程技术网

Regex perl正则表达式/x开关

Regex perl正则表达式/x开关,regex,perl,Regex,Perl,尝试匹配“JOB:fruit 342 appless to get” 代码匹配: $line =~ /^JOB: fruit (\d+) apples to get/ 但是当我添加/x开关时 $line =~ /^JOB: fruit (\d+) apples to get/x 它不匹配 我查看了/x开关,它说它只是让你做注释,所以我不知道为什么添加/x会阻止我的正则表达式匹配,/x修饰符告诉Perl忽略正则表达式中没有转义的大部分空白 例如,让我们只关注苹果以获得。您可以将其与: $lin

尝试匹配“JOB:fruit 342 appless to get”

代码匹配:

$line =~ /^JOB: fruit (\d+) apples to get/
但是当我添加/x开关时

$line =~ /^JOB: fruit (\d+) apples to get/x
它不匹配


我查看了/x开关,它说它只是让你做注释,所以我不知道为什么添加/x会阻止我的正则表达式匹配,
/x
修饰符告诉Perl忽略正则表达式中没有转义的大部分空白

例如,让我们只关注
苹果以获得
。您可以将其与:

$line =~ /apples to get/
但如果你尝试:

$line =~ /apples to get/x
然后Perl将忽略空格。因此,这就像尝试匹配
applestoget

您可以在中阅读更多关于它的信息。他们有一个很好的例子,说明了如何使用修饰符使代码更具可读性

 # Delete (most) C comments.
$program =~ s {
        /\* # Match the opening delimiter.
        .*? # Match a minimal number of characters.
        \*/ # Match the closing delimiter.
} []gsx;
它们还提到如何在使用
/x
修饰符时再次匹配空格或

使用/x意味着如果您想要在 模式(位于括号内的字符类之外,不受影响 通过/x),那么您要么必须将其转义(使用反斜杠或 \或使用八进制、十六进制或{}转义对它们进行编码


允许注释的一部分也是忽略文字空白。对于要匹配的空格,请使用
\s
[]

比如说

$line =~ /^                      #beginning of string
           JOB:[ ]fruit[ ]       #some literal text 
           (\d+)                 #capture digits to $1
           [ ]apples[ ]to[ ]get  #more literal text
         /x
请注意注释开头之前的所有空格。如果他们数一数的话,那就糟了