我的文字偶尔会将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]
?
答案 0 :(得分:6)
答案 1 :(得分:5)
您希望llla
转换为111a
吗?因为你的正则表达式也进行了转换。您尝试解决的问题本质上是无上下文的(您可以在[Il]
的流之间或之间嵌入一个数字,然后才会将它们转换为1
)。如果我是你,我会写一个循环。如果我错过了什么,请纠正我。