У меня есть строка v1.2NDM
. Я пытаюсь использовать regex для получения 1.2
.Удалить все символы, кроме цифр и периода
my $string = "v1.2NDM";
$string =~ s/[^0-9.]//;
print $string;
выход: 1.2NDM
но я пытаюсь получить 1.2
.
У меня есть строка v1.2NDM
. Я пытаюсь использовать regex для получения 1.2
.Удалить все символы, кроме цифр и периода
my $string = "v1.2NDM";
$string =~ s/[^0-9.]//;
print $string;
выход: 1.2NDM
но я пытаюсь получить 1.2
.
Используйте его, как это с g
или глобальным флагом:
$string =~ s/[^0-9.]+//g;
Он будет выводить 1.2
Теперь. Также лучше использовать +
после класса персонажа по соображениям эффективности.
Вы можете удалить символы с оператором транслитерации:
$string =~ y/0-9.//cd;
/c
средства дополняют - соответствует любому символу, не указанные в списке поиска. /d
означает удаление символов, для которых в списке замещений не указана замена (все совпадающие символы в этом случае).
Причина использования tr /// aka y /// вместо s /// заключается в том, что она быстрее. – ikegami