У меня есть текст, который иногда заменяет l
или I
на 1
(это из OCR). Я хочу преобразовать их в 1
, когда они являются частью числа, но оставить их в покое, если они стоят одни. Под «частью числа» я подразумеваю соседство с другой цифрой или l
или I
. Поэтому я хочу изменить 1I3
на 113
, но оставить 1 I 3
в покое.
Вот что я делаю:
$var =~ s/[lI](?=[lI\d])/1/g;
$var =~ s/(?<=[lI\d])[lI]/1/g;
Есть ли более элегантный способ сделать это за один шаг? Другими словами, какому регулярному выражению будет соответствовать [Il]
, то есть или , которому предшествует [lI\d]
или , за которым следует [lI\d]
?