Простая проблема Perl-строки - PullRequest
1 голос
/ 05 марта 2010

Я знаю, что это может быть очень легко для некоторых ,,

У меня есть простая строка вроде этой @¨0­+639172523299 (с символами перед номером мобильного телефона) У меня вопрос, как мне удалить все символы перед плюсом (+)? Что я знаю, это удалить известный символ следующим образом:

$number =~ tr/://d; (если я хочу удалить двоеточие)

Но здесь я хочу, чтобы все символы до «+» были удалены.

Ответы [ 6 ]

4 голосов
/ 05 марта 2010

Чтобы удалить все, вплоть до первого +, включая, вы можете сделать:

$number ~= s/.*\+//;

Если вы хотите сохранить +, вы можете поместить это в замену:

$number ~= s/.*\+/+/;

Вышеприведенное говорит: сопоставьте «что-нибудь» (.*), за которым следует + (+ - это специальный символ в регулярных выражениях, поэтому для него требуется экранирование обратной косой черты) и его замена ничем ( или в приведенном выше примере замените его одним +).

Обратите внимание, что вышеприведенное вычеркнет все в строке до LAST +, что может быть не тем, что вы хотите. Если вы хотите сохранить в строке все до FIRST +, вы можете сделать:

$number =~ s/[^+]*\+//;

или

$number =~ s/[^+]*\+/+/; # Keep the +

Отличие от первого регулярного выражения состоит в [^+]* вместо .*, что означает «соответствует любому символу, кроме +».

Для получения дополнительной информации о регулярных выражениях Perl справочная страница perldoc perlre довольно хороша, как и книга О'Рейли Мастеринг регулярных выражений book.

2 голосов
/ 05 марта 2010

в простейшем случае

$string =~ s/^.*\+//;

, если перед номером мобильного телефона есть несколько «+»

$string="@+0+0­+639172523299";
@s=split /\+/,$string;
print $s[-1];

На самом деле, вы можете просто использовать split() вместо регулярных выражений. Это проще.

1 голос
/ 05 марта 2010
my $string = '@¨0­+639172523299';
$string =~ s/(.*)(?=\+)//;
print $string;
0 голосов
/ 05 марта 2010
my $str="@¨0­+639172523299";
if($str=~/(\D+)(\+[0-9]+)/)
{
  print $2;
}
0 голосов
/ 05 марта 2010

s/(.*?\+)(.*)/\2/;

Если вы хотите, чтобы плюс оставался

з / (\ +) / \ 2 \ 3 / (*.?) (*.);

0 голосов
/ 05 марта 2010
$number =~ s/^.*\+//;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...