Regex来标识数字前面或后面的字符

Regex来标识数字前面或后面的字符,regex,perl,Regex,Perl,我的文本偶尔会用l或I替换1(来自OCR)。当它们是数字的一部分时,我想将它们转换为1,但如果它们单独存在,就不要使用它们。我所说的“数字的一部分”是指相邻于另一个数字或l或I。因此,我想将1I3更改为113,但不要使用1I3 以下是我正在做的: $var =~ s/[lI](?=[lI\d])/1/g; $var =~ s/(?<=[lI\d])[lI]/1/g; $var=~s/[lI](?=[lI\d])/1/g; $var=~s/(?您可以使用: $var =~ s/(?<

我的文本偶尔会用
l
I
替换
1
(来自OCR)。当它们是数字的一部分时,我想将它们转换为
1
,但如果它们单独存在,就不要使用它们。我所说的“数字的一部分”是指相邻于另一个数字或
l
I
。因此,我想将
1I3
更改为
113
,但不要使用
1I3

以下是我正在做的:

$var =~ s/[lI](?=[lI\d])/1/g;
$var =~ s/(?<=[lI\d])[lI]/1/g;
$var=~s/[lI](?=[lI\d])/1/g;
$var=~s/(?您可以使用

$var =~ s/(?<=[lI\d])[lI]|[lI](?=[lI\d])/1/g;

$var=~s/(?您是否希望
llla
转换为
111a
?因为您的regexp也会进行这种转换。您试图解决的问题本质上是上下文无关的(您可以在
[Il]
流的相邻或中间嵌入一个数字,然后才将它们转换为
1
).如果我是你,我会写一个循环。如果我遗漏了什么,请纠正我。

啊哈,谢谢。幸运的是,亲爱的领导,他没有出现在我的数据中。或者其他名字,谢天谢地。