Как поместить двоеточие в строку двумя символами в конце, используя Perl? - PullRequest
5 голосов
/ 03 февраля 2009

Я пытаюсь найти способ поместить двоеточие (:) в строку, два символа от конца строки.

Примеры $ Meetdays:
1200 => 12: 00
900 => 9: 00
1340 => 13: 40

Не уверен, должно ли это быть регулярное выражение или просто другая функция, о которой я не знаю.

Ответы [ 5 ]

9 голосов
/ 03 февраля 2009

Можно также использовать substr () , а также .....

my $string = "1200";
substr $string, -2, 0, ':';

# $string => '12:00';
8 голосов
/ 03 февраля 2009
s/(?=..$)/:/

Не используйте предложение икры $&. perldoc perlvar:

Использование этой переменной в любом месте программы накладывает существенное снижение производительности на все совпадения регулярных выражений. См. «ОШИБКИ».

1 голос
/ 03 февраля 2009

Вы можете попробовать это:

s/..$/:$&/

он соответствует двум символам в конце строки и заменяет его двоеточием и соответствующей строкой (то есть двумя символами).

EDIT
Исправлен sed-backref в эквиваленте perl.

0 голосов
/ 03 февраля 2009

ответ икры «работает», но его довольно неочевидное регулярное выражение.

Я бы больше пошел на

s/(^.*)(..$)/$1:$2/

Потому что я просто люблю backrefs.

Это излишне для того, что ты делаешь, но для меня это более семантически выразительно.

0 голосов
/ 03 февраля 2009

Perl-эквивалент sed & is $ &, поэтому он должен быть:

 $s = s /..$/:$&/s;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...