Perl单引号替换

时间:2019-12-04 13:32:18

标签: perl

在最近的日子里,我一直在努力替换Perl中的字符:

我有一个用单引号引起来的字符串,但是,在该字符串内部,我有一个包含单引号的名称,例如 O'Neil 。现在,考虑到我的String用单引号引起来,Perl会将Name中的单引号识别为String的结尾。

用双引号引起来的整个字符串不是一种选择,因为它是根据URL构建的。

现在,我做了一些研究但没有找到任何东西,现在我要问所有人:

我尝试使用以下语法:

$Daten =~ s/\'/\\'/g;当然不起作用...

$Daten是包含名称 O'Neil *

的整个字符串

现在,我想用反斜杠替换单引号:'-> \'

有人有什么主意吗?

最好的问候, 爱奥努特散打

2 个答案:

答案 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

否则,我没有足够的信息来理解您的问题(没有数据样本,没有代码片段)。