Diferença na manipulação regular de expressões entre Perl, Kikki e Kodos

0
#!/usr/bin/perl

$mystring = "[2004/04/13] The date of this article.";
if($mystring =~ m/(\d+)/) {
        print "The first number is $1.";
}

Perl retorna 2004 , mas Kiki e Kodos retornam /04/ . Por que isso?

    
por chris 12.05.2012 / 22:49

2 respostas

1

Desde que você não forneceu seu código Python (ou o que Kiki e Kodos são) então pode ser difícil dizer com certeza, mas meu palpite é que a sintaxe padrão para Kiki e Kodos difere de Perl em que você não precisa do código. delimitadores de barra. Por exemplo, o equivalente em Python seria:

import re
m = re.search('(\d+)', "[2004/04/13] The date of this article.")
print m.group(0)

Observe que o padrão não inclui barras.

    
por 12.05.2012 / 23:26
0

No Perl, é importante perceber que o operador regex não é m , são as barras duplas - /..../ (onde .... é, na verdade, sua expressão regular). O m é opcional se você usar / .

Os seguintes são todos equivalentes:

$mystring =~ m/(\d+)/;

$mystring =~ /(\d+)/;

$var = '(\d+)';
$mystring =~ /$var/;
    
por 13.05.2012 / 14:06