曲径通幽论坛

标题: \x 加入空白 [打印本页]

作者: beyes    时间: 2011-10-3 14:48
标题: \\x 加入空白
/x 修饰符能够在模式里随意加上空白,其目的是使它更容易阅读和理解。

考虑下面代码:
[Perl] 纯文本查看 复制代码
#!/usr/bin/perl

$_ = "-&1234#9032";

if (/^-?&\d+\.?\d*/) {
        print "matched\n";
}else {
        print "not matched\n";
}

if (/^-?&       \d+     \.?     \d* /) {
        print "matched\n";
}else {
        print "not matched\n";
}

运行输出:
./x.pl
matched
not matched
程序中的第 2 个 if 的匹配模式里,各个匹配元素分别用空格或制表符隔开,这时就无法匹配。但是如果在 /^-?&       \d+     \.?     \d* / 改为 /^-?&       \d+     \.?     \d* /x 后,那么就能和第 1 个 if 的情况一样产生匹配。这是因为 /x 表示允许在匹配模式里插入任意空白,这样便使得这些空白失去了原来的空白的意义,在此仅仅是为了阅读的便利。

时机上,对于匹配空白,我们往往不会直接敲一个空格键或者一个制表符,而是使用 \s 或 \*,\+ 之类的表达方式。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2