早教吧作业答案频道 -->英语-->
PERL正则匹配中使用变量的问题两个句子:my$sentence1="ADDFX2\add1rootbit32csau1/fourcsa15to12/add442/U13(.A(resultA[15]),.B(resultB[15]),.CI(\add1rootbit32csau1/fourcsa15to12/add442/carry[3]),.CO(\bit32csa
题目详情
PERL 正则匹配中使用变量的问题
两个句子:my $sentence1=" ADDFX2 \add_1_root_bit32_csa_u1/four_csa_15to12/add_44_2/U1_3 ( .A( resultA[15]),.B(resultB[15]),.CI( \add_1_root_bit32_csa_u1/four_csa_15to12/add_44_2/carry[3] ),.CO( \bit32_csa_u1/four_csa_15to12/one_cout ),.S( \bit32_csa_u1/four_csa_15to12/one_sum [3]) )";
my $sentence2="AOI22X1 U1493 ( .A0(\bit32_csa_u1/four_csa_23to20/zero_sum [1]),.A1(n495),.B0(\bit32_csa_u1/four_csa_23to20/one_sum [1]),.B1(n1772),.Y(n498) )";
my @AOI22X1=qw(A0 A1 B0 B1);
my @ADDFX2=qw(A B CI);
这两句,想把resultA[15]替换成my $a=resultA15_r,
把\bit32_csa_u1/four_csa_23to20/zero_sum [1]替换成$b=\bit32_csa_u1/four_csa_23to20/zero_sum1_r
这两个只是其中两句,还有大量的替换,被替换的量可以用正则匹配匹配出来的,成功的,要替换的结果也有变量可以表示,但是替换就是不成功啊.
foreach my $i(@ADDFX2){
$sentence1=~m/^.+ \.$i \( \s*(.)\s* \) /x;
foreach my $w(@wire){
\x05 if ($1 eq $w){
\x05\x05
\x05\x05 my $new=&gen_newname($w);
\x05\x05 $sentence1=~s/$w/$new/;
\x05\x05 $sent1=$sentence1;
\x05\x05 }
\x05\x05else {
\x05\x05 $sent1=$sentence1;
\x05\x05}
\x05\x05
\x05}
\x05}
两个句子:my $sentence1=" ADDFX2 \add_1_root_bit32_csa_u1/four_csa_15to12/add_44_2/U1_3 ( .A( resultA[15]),.B(resultB[15]),.CI( \add_1_root_bit32_csa_u1/four_csa_15to12/add_44_2/carry[3] ),.CO( \bit32_csa_u1/four_csa_15to12/one_cout ),.S( \bit32_csa_u1/four_csa_15to12/one_sum [3]) )";
my $sentence2="AOI22X1 U1493 ( .A0(\bit32_csa_u1/four_csa_23to20/zero_sum [1]),.A1(n495),.B0(\bit32_csa_u1/four_csa_23to20/one_sum [1]),.B1(n1772),.Y(n498) )";
my @AOI22X1=qw(A0 A1 B0 B1);
my @ADDFX2=qw(A B CI);
这两句,想把resultA[15]替换成my $a=resultA15_r,
把\bit32_csa_u1/four_csa_23to20/zero_sum [1]替换成$b=\bit32_csa_u1/four_csa_23to20/zero_sum1_r
这两个只是其中两句,还有大量的替换,被替换的量可以用正则匹配匹配出来的,成功的,要替换的结果也有变量可以表示,但是替换就是不成功啊.
foreach my $i(@ADDFX2){
$sentence1=~m/^.+ \.$i \( \s*(.)\s* \) /x;
foreach my $w(@wire){
\x05 if ($1 eq $w){
\x05\x05
\x05\x05 my $new=&gen_newname($w);
\x05\x05 $sentence1=~s/$w/$new/;
\x05\x05 $sent1=$sentence1;
\x05\x05 }
\x05\x05else {
\x05\x05 $sent1=$sentence1;
\x05\x05}
\x05\x05
\x05}
\x05}
▼优质解答
答案和解析
# 将 $sentence1=~s/$w/$new/; 改成
$sentence1 =~ s/\Q$w\E/\Q$new\E/g;
my $new=&gen_newname($w);
$sentence1=~s/$w/$new/;
$sent1=$sentence1;
}
else {
$sent1=$sentence1;
}
$sent1 = $sentence1;
$sentence1 =~ s/\Q$w\E/\Q$new\E/g;
你其实可以将
if ($1 eq $w){my $new=&gen_newname($w);
$sentence1=~s/$w/$new/;
$sent1=$sentence1;
}
else {
$sent1=$sentence1;
}
改成
$sentence1 =~ s{$w}{gen_newname($w)}eg if $w eq $1;$sent1 = $sentence1;
看了 PERL正则匹配中使用变量的...的网友还看了以下:
在xy平面,直线L过原点O,和点A,A不等于O.取一点P,过P点做L的垂线和L相交于Q点,如果P点 2020-05-16 …
已知集合向量M={第一象限角},向量N={锐角},向量P={小于90°角},则下列关系式中正确的是 2020-05-16 …
以下程序段中调用scanf函数给变量a输入数值的方法是错误的,其原因是。int*p,*q,a,b; 2020-05-17 …
刘老师你好,我在书上看到一个已知特征值和特征向量求原向量,是利用B=PA(P的转置矩阵)这种方法说 2020-06-13 …
已知三角形ABC所在平面内一点P,满足AP的中点为Q...已知三角形ABC所在平面内一点P,满足A 2020-06-15 …
PERL正则匹配中使用变量的问题两个句子:my$sentence1="ADDFX2\add1roo 2020-07-23 …
1.在inta=10,*p=&a;语句中,p的值()A.变量p的地址值B.10C.变量a的地址值D. 2020-11-21 …
分别用带有箭头的线段表示某个质点的初动量P,末动量P′,动量的变化量△P.其中线段长短表示大小,箭头 2020-11-23 …
分别用带有箭头x线段表示某个质点x初动量P,末动量P′,动量x变化量△P.其中线段长短表示大大,箭头 2020-11-23 …
某公司生产的某批产品的销售量P万件(生产量与销售量相等)与促销费用x万元满足P=x+24(其中0≤x 2020-12-30 …