LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1042|回复: 4

perl的正则表达式的问题

[复制链接]
发表于 2004-7-16 09:53:27 | 显示全部楼层 |阅读模式
我想把一个这样的一个式子
0.8.1-11
按数子和非数字分开
0
.
8
.
1
-
11
还有这样的
2.0.7+cvs.2004.05.05-1
要分为
2
.
0
.
7
+cvs.
2004
.
05
.
05
-
1
我用这个式子
open TMP, "tmp" or die "Cant open file tmp,$!";
while (<TMP>)
{
        @line =~ /((\d+)|(\D+))+/ ;
        print $1;
        print $2;
        print $3;
        print $4;
        print $5;
        print $6;

#       print $input;
}
我是想把这些变量按正则表达式分开,记忆起来,然后分别调用,这样写不行阿,谁帮我看看?
发表于 2004-7-16 10:34:08 | 显示全部楼层
one\d{1})\.(\d{1})\.(\d{1})(-)(\d{2})
two:\d{1})\.(\d{1})\.(\d{1})(\+cvs)\.(\d{4})\.(\d{2})\.(\d{2})(-)(\d{1})
发表于 2004-7-16 10:37:17 | 显示全部楼层
(\d{1})\.(\d{1})\.(\d{1})(-)(\d{2})
(\d{1})\.(\d{1})\.(\d{1})(\+cvs)\.(\d{4})\.(\d{2})\.(\d{2})(-)(\d{1})
 楼主| 发表于 2004-7-16 11:01:06 | 显示全部楼层

哎,不是哎

这只是两个例子,其实非数字有好多都没列出来,而且自段也不是一边长的,不可以这么写,有没有更好的通用的方法?
发表于 2004-7-16 18:56:20 | 显示全部楼层
看看这个行不行:

  1. #!/usr/bin/perl -w

  2. $s = "2.0.7+cvs.2004.05.05-1";
  3. while($s =~ /(\d*)(\D*)/g){
  4.   print "$1\n$2\n";
  5. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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