Я пытаюсь найти способ поместить двоеточие (:) в строку, два символа от конца строки.
Примеры $ Meetdays: 1200 => 12: 00 900 => 9: 00 1340 => 13: 40
Не уверен, должно ли это быть регулярное выражение или просто другая функция, о которой я не знаю.
Можно также использовать substr () , а также .....
my $string = "1200"; substr $string, -2, 0, ':'; # $string => '12:00';
s/(?=..$)/:/
Не используйте предложение икры $&. perldoc perlvar:
$&
Использование этой переменной в любом месте программы накладывает существенное снижение производительности на все совпадения регулярных выражений. См. «ОШИБКИ».
Вы можете попробовать это:
s/..$/:$&/
он соответствует двум символам в конце строки и заменяет его двоеточием и соответствующей строкой (то есть двумя символами).
EDIT Исправлен sed-backref в эквиваленте perl.
ответ икры «работает», но его довольно неочевидное регулярное выражение.
Я бы больше пошел на
s/(^.*)(..$)/$1:$2/
Потому что я просто люблю backrefs.
Это излишне для того, что ты делаешь, но для меня это более семантически выразительно.
Perl-эквивалент sed & is $ &, поэтому он должен быть:
$s = s /..$/:$&/s;