如何在正则表达式中将$1与数字连接起来
发布时间:2020-12-14 06:23:57 所属栏目:百科 来源:网络整理
导读:我想在两种模式之间插入数字: $s = 'id="" value="div"';$s =~ s/(id=")(".*)/$1123$2/; 当然我得到了错误和“value =”div“的结果. 预期的结果是id =“123”value =“div”. 在替换中,我的意思是1美元,然后是123,然后是2美元,但不是1123美元,而是2美元.
我想在两种模式之间插入数字:
$s = 'id="" value="div"'; $s =~ s/(id=")(".*)/$1123$2/; 当然我得到了错误和“value =”div“的结果. 在替换中,我的意思是1美元,然后是123,然后是2美元,但不是1123美元,而是2美元. 谢谢. $s =~ s/(id=")(".*)/$1123$2/; # Use of uninitialized value $1123 in concatenation (.) or string 虽然你预计它会替换1美元,但perl认为它是1123美元的变量. Perl无法知道你的意思是1美元.因此,您需要通过将变量指定为${1}来将变量限制为$1: $s =~ s/(id=")(".*)/${1}123$2/; 在脚本的顶部包含以下内容始终是个好主意.它们将为您节省大量时间和精力. use strict; use warnings; 例如,运行包含上述模块的脚本会导致错误消息: Use of uninitialized value $1123 in concatenation (.) or string at /tmp/test.pl line 7. (忽略报告的脚本名称和行号.)它清楚地说明了perl的预期. 使用look-behind和look-ahead断言的另一种方法: $s =~ s/(?<=id=")(?=")/123/; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |