Regex perl正则表达式/x开关
尝试匹配“JOB:fruit 342 appless to get” 代码匹配: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
$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
请注意注释开头之前的所有空格。如果他们数一数的话,那就糟了