Regex 如何使用Perl有选择地修改HTML文档中脚本标记的src属性?

Regex 如何使用Perl有选择地修改HTML文档中脚本标记的src属性?,regex,perl,html-parsing,html-parser,Regex,Perl,Html Parsing,Html Parser,我需要用Perl编写一个正则表达式,在所有SRC前面加上[Perl]texthere[/Perl],如下所示: <script src="[perl]texthere[/perl]/text"></script> 有什么帮助吗?谢谢 使用负前瞻模式(在下面的第三行): s{ (我可以通过:^使用适当的解析器匹配任何src=(http除外): !/usr/bin/env perl 使用严格;使用警告; 使用HTML::TokeParser::Simple; my$

我需要用Perl编写一个正则表达式,在所有SRC前面加上[Perl]texthere[/Perl],如下所示:

 <script src="[perl]texthere[/perl]/text"></script> 


有什么帮助吗?谢谢

使用负前瞻模式(在下面的第三行):

s{

(我可以通过:
^使用适当的解析器匹配任何src=(http除外):

!/usr/bin/env perl
使用严格;使用警告;
使用HTML::TokeParser::Simple;
my$parser=HTML::TokeParser::Simple->new(句柄=>\*数据);
而(my$token=$parser->get_token('script')){
如果($token->is_标记('script'))
并已定义(my$src=$token->get_attr('src')){
$src=~m{^https?://}
或者$token->set_attr('src',“[perl]texthhere[/perl]$src”);
}
按原样打印$token->;
}
__资料__
同时,忽略以http开头的SCR,例如:
输出:

<script src="[perl]texthere[/perl]/js/text.text.js/"></script> And at the same time, ignore scrs that begin with http, as such: <script src="https://websitewebsitewebsite"></script> 同时,忽略以http开头的SCR,例如: 这应该起作用:

 s{(?<=src=)(?!"https?)}{[perl]texthere[/perl]}
s{(?”,
'' );
我的@nlnk=地图{
s{(?)?
问候


rbo

比我快了13秒。+1抱歉,我是新手。如果我在BBedit中使用find and replace,那么find and replace字段中会出现什么?答案中提供的语法意味着
s{find}{replace}
。只需尝试一些变体。如果它允许lookaround断言,您可以检查
(?可能的重复项)
<script src="[perl]texthere[/perl]/js/text.text.js/"></script>

And at the same time, ignore scrs that begin with http, as such:

 <script src="https://websitewebsitewebsite"></script>
 s{(?<=src=)(?!"https?)}{[perl]texthere[/perl]}
 my @olnk = ('<script src=/js/text.text.js/"></script>',
             '<script src="https://websitewebsitewebsite"></script>' );
 my @nlnk = map {
                  s{(?<=src=)(?!"https?)}{[perl]texthere[/perl]}; $_
                } @olnk;
 print join "\n", @nlnk;

 <script src=[perl]texthere[/perl]/js/text.text.js/"></script>
 <script src="https://websitewebsitewebsite"></script>