曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 4006|回复: 0
打印 上一主题 下一主题

\x 加入空白

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34395
跳转到指定楼层
楼主
发表于 2011-10-3 14:48:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/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 或 \*,\+ 之类的表达方式。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-5-4 00:19 , Processed in 0.061487 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表