试着匹配"JOB:fruit 342 appless to get"
代码匹配:
$line =~ /^JOB: fruit (\d+) apples to get/
Run Code Online (Sandbox Code Playgroud)
但是当我添加/ x切换时
$line =~ /^JOB: fruit (\d+) apples to get/x
Run Code Online (Sandbox Code Playgroud)
它不匹配.
我查看/ x开关,它说它只是让你做评论所以我不知道为什么添加/ x阻止我的正则表达式匹配
该/x修饰符告诉Perl忽略未在正则表达式躲过最空白.
例如,让我们专注于apples to get.你可以匹配:
$line =~ /apples to get/
Run Code Online (Sandbox Code Playgroud)
但如果你尝试:
$line =~ /apples to get/x
Run Code Online (Sandbox Code Playgroud)
然后Perl会忽略这些空格.所以这就像尝试匹配一样applestoget.
您可以在perlre中阅读更多相关信息.他们有一个很好的例子,说明如何使用修饰符使代码更具可读性.
# Delete (most) C comments.
$program =~ s {
/\* # Match the opening delimiter.
.*? # Match a minimal number of characters.
\*/ # Match the closing delimiter.
} []gsx;
Run Code Online (Sandbox Code Playgroud)
他们还提到了如何#在使用/x修饰符时匹配空格或再次匹配空格.
使用/ x意味着如果你想要模式中的真实空格或#字符(在括号内的字符类之外,不受/ x影响),那么你要么必须逃避它们(使用反斜杠或\ Q ...\E)或使用八进制,十六进制或\ N {}转义编码它们.