Регулярное выражение для набора - PullRequest
0 голосов
/ 28 апреля 2009

Мне нужна помощь для определения следующих выражений с помощью RegEx

строка "(x / x)", где x - любое число от 0 до 999. строка "x of x", где x - любое число от 0 до 999.

Как правило, строка является маркером для набора, то есть 4 из 10 вещей, или (3/5), где первое число является элементом, а второе число является общим.

Спасибо

Ответы [ 3 ]

1 голос
/ 28 апреля 2009
\([0-9]+\/[0-9]+\)

и

[0-9]+ of [0-9]+
1 голос
/ 28 апреля 2009

См. Как сопоставить числа между X и Y с регулярным выражением? .

#!/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 .

1 голос
/ 28 апреля 2009

Как насчет

"\ d {1,3} / \ д {1,3}"

и

"\ d {1,3} из \ d {1,3}"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...