0

4165867111 を含む partial_phone になる正しい $string = 行を判断するのを手伝ってくれませんか?

sub phoneno {
my ($string) = @_;
$string =~  s/^\+*0*1*//g;
return $string;
}

my $phone = "<sip:+4165867111@something;tag=somethingelse>";

my $partial_phone = phoneno($phone);
4

3 に答える 3

3
$string =~ s{
    \A          # beginning of string
    .+          # any characters
    \+          # literal +
    (           # begin capture to $1
        \d{5,}  # at least five digits
    )           # end capture to $`
    \@          # literal @
    .+          # any characters
    \z          # end of string
}{$1}xms;
于 2013-01-22T21:12:19.720 に答える
2

置換は で始まり^ます。つまり、パターンの残りの部分が文字列の先頭と一致しない限り、置換は実行されません。

これを行う方法はたくさんあります。どうですか

my ($partial) = $phone =~ /([2-9]\d+)/;
return $partial;

これは、0 または 1 で始まらない数字の文字列を返します。

于 2013-01-22T21:10:04.063 に答える
2

これにより、次の前のすべての数字がキャプチャされます@

use strict;
use warnings;

sub phoneno {
    my ($string) = @_;
    my ($phoneNo) = $string =~ /(\d+)\@/;
    return $phoneNo;
}

my $phone = '<sip:+4165867111@something;tag=somethingelse>';

my $partial_phone = phoneno($phone);

print $partial_phone;

出力:

4165867111
于 2013-01-22T21:27:39.583 に答える