LINUX.ORG.RU

Регулярки

 ,


0

2

Никогда не был силен в регулярках. Прошу помощи у вас.

Необходимо, чтобы регулярка находила число, в этой строке:

TF=22;

Но при этом, это число, обязательно, должно находиться именно в такой строке, т.е. следующее сработать не должно:

BT=22;
=220;

Цифр, в числе, должно быть не больше двух, однако одна цифра в числе - это нормально.

И чтобы эта регулярка работала с каким-нибудь preg_match (PHP).

★★★

Последнее исправление: CYB3R (всего исправлений: 2)
Ответ на: комментарий от VirRaa

PHP-программисты - такие PHP-программисты.

group capture прочитай в документации.

aedeph_ ★★
()
Последнее исправление: aedeph_ (всего исправлений: 1)

На перле это будет как-то так:

use strict;
use warnings;
 
my @cases = qw(TF=22; BT=22; =220;);
for my $str (@cases) {
    my @matches = $str =~ /^TF=(\d{1,2});$/;
    if (@matches) {
        print "Got it: $str -> $matches[0]\n";
    } else {
        print "Nothing to do with: $str\n";
    }
}

http://ideone.com/VCaRiH

Собственно регулярка:

/^TF=(\d{1,2});$/
будет выглядеть так же и на ПХП, только без окружающих слешей

KennyMinigun ★★★★★
()
Последнее исправление: KennyMinigun (всего исправлений: 1)
$matches = null;
$returnValue = preg_match('#TF=(?<number>\d\d);#', 'TF=23;', $matches);
if ($returnVaue)
{
     echo $matches['number'];
}
RR
()
Ответ на: комментарий от RR

Если нужно не одно число:

$matches = null;
$returnValue = preg_match_all('#TF=(?<number>\d\d);#', 'TF=23;fF=asasd;TF=12;TF=123;', $matches);
if ($returnVaue)
{
     print_r($matches['number']);
}

RR
()
Ответ на: комментарий от KennyMinigun

будет выглядеть так же и на ПХП, только без окружающих слешей

маленькая ремарка: ещё как с ними, в стандарте остались только перловые регулярки, юниксовые выкинули.

alexmaru
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.