在最近的日子里,我一直在努力替换Perl中的字符:
我有一个用单引号引起来的字符串,但是,在该字符串内部,我有一个包含单引号的名称,例如 O'Neil 。现在,考虑到我的String用单引号引起来,Perl会将Name中的单引号识别为String的结尾。
用双引号引起来的整个字符串不是一种选择,因为它是根据URL构建的。
现在,我做了一些研究但没有找到任何东西,现在我要问所有人:
我尝试使用以下语法:
$Daten =~ s/\'/\\'/g;
当然不起作用...
$Daten
是包含名称 O'Neil *
现在,我想用反斜杠替换单引号:'-> \'
有人有什么主意吗?
最好的问候, 爱奥努特散打
答案 0 :(得分:1)
也许以下代码应符合您的要求
use strict;
use warnings;
my $debug = 1;
while( my $line = <DATA> ) {
$line =~ s/(.*)'(.+)'(.+)'(.*)/$1'$2\\'$3'$4/g;
print $line if $debug;
}
__DATA__
'USER1:O'NEILL:PATRICK:M:lastname_firstname@company.com'
datax 'USER1:O'NEILL:PATRICK:M:lastname_firstname@company.com' datay
输出
'USER1:O\'NEILL:PATRICK:M:lastname_firstname@company.com'
datax 'USER1:O\'NEILL:PATRICK:M:lastname_firstname@company.com' datay
答案 1 :(得分:0)
好吧,因为您没有提供示例或您的代码,所以我必须即兴
use strict;
use warnings;
my $debug = 1;
while( my $Daten = <DATA> ) {
$Daten =~ s/(.*)'(.+)'(.+)'(.*)/$1'$2\\'$3'$4/g; # Magic happens here
print $Daten if $debug;
}
__DATA__
'USER1:O'NEILL:PATRICK:M:lastname_firstname@company.com'
datax 'USER1:O'NEILL:PATRICK:M:lastname_firstname@company.com' datay
输出
'USER1:O\'NEILL:PATRICK:M:lastname_firstname@company.com'
datax 'USER1:O\'NEILL:PATRICK:M:lastname_firstname@company.com' datay
否则,我没有足够的信息来理解您的问题(没有数据样本,没有代码片段)。