2009-04-28 63 views
0

我想用于与正则表达式检测以下表达式正则表达式对集

串一些帮助“(X/X)”,其中x是任何数量的从0-999。 字符串“x的x”其中x是从0-999的任何数字。

通常,字符串是一组标记,即10个事物中的4个,或者(3/5),其中第一个数字是项目,第二个数字是总数。

由于

+1

什么语言?或正则表达式的味道? – hometoast 2009-04-28 19:17:44

回答

1

如何的

“\ d {1,3}/\ d {1,3}”

“\ d {1,3} \ d {1,3}”

+0

看起来不错。让我在标记之前先给它一下。谢谢 – Jordan 2009-04-28 19:25:33

+1

这将匹配000等,这可能会或可能不会被接受。在Perl 5.8和5.10中,\ d将匹配不是[0-9]的东西(例如MONGOLIAN DIGIT 5 U + 1815) – 2009-04-28 19:35:50

1
\([0-9]+\/[0-9]+\) 

[0-9]+ of [0-9]+ 
1

请参阅How to match numbers between X and Y with regexp?

#!/usr/bin/perl 

use strict; 
use warnings; 

my $num_re = qr/[0-9]|[1-9][0-9]|[1-9][0-9]{2}/; 
for my $s qw(1/10 100/500 a/456) { 
    if (my ($x, $y) = $s =~ m{^($num_re)/($num_re)$}) { 
     print "x is $x and y is $y\n"; 
    } else { 
     print "$s does not match\n"; 
    } 
} 

或只是

^([0-9]|[1-9][0-9]|[1-9][0-9]{2})\/([0-9]|[1-9][0-9]|[1-9][0-9]{2})$ 

,如果你不介意违反DRY