2009-04-28 9 views
0

RegEx正規表現のセット

文字列 "x/x"(xは0〜999の任意の数字)で次の式を検出するためのヘルプが必要です。 文字列 "x of x"ここで、xは0〜999の任意の数字です。

通常、文字列はセットのマーカー、つまり10個のうち4個、または最初の数字がアイテムで2番目の数字が合計である(3/5)です。

おかげ

+1

どのような言語ですか?またはどのような正規表現の味? – hometoast

答えて

1

どの約

"\ D {1,3}/\ D {1,3}"

「\ dの{1,3}の\ D {1,3}」

+0

いいですね。私がそれをマークする前に私はそれを行かせましょう。ありがとう – Jordan

+1

これは000などと一致しますが、それは受け入れられるかもしれません。そして、Perl 5.8と5.10では、[0-9]以外のもの(MONGOLIAN DIGIT 5 U + 1815など)と一致します。 –

+0

良い点。/dは私が必要とするほど明確ではないかもしれません。ありがとう – Jordan

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

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

これは000などと一致しますが、それは受け入れられるかもしれません。 –

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に違反し気にしない場合。