正则表达式 – 如何停止.在一个字符的第一个实例而不是在perl中
发布时间:2020-12-13 21:53:15 所属栏目:百科 来源:网络整理
导读:我想替换: '''font size="3"font color="blue" SUMMER/WINTER CONFIGURATION FILES/font/font''' 附: ='''font color="blue" SUMMER/WINTER CONFIGURATION FILES/font'''= 现在我的现有代码是: $html =~ s/n(.+)font size=".+?"(.+)/font(.+)n/n=$1
我想替换:
'''<font size="3"><font color="blue"> SUMMER/WINTER CONFIGURATION FILES</font></font>''' 附: ='''<font color="blue"> SUMMER/WINTER CONFIGURATION FILES</font>'''= 现在我的现有代码是: $html =~ s/n(.+)<font size=".+?">(.+)</font>(.+)n/n=$1$2$3=n/gm 然而,最终结果如下: =''' SUMMER/WINTER CONFIGURATION FILES</font>'''= 现在我可以看到发生了什么,它匹配< font size =“.....一直到< font color blue”>结尾这不是我想要的,我希望它停在第一个“不是最后一个实例,我认为那就是把那个标记放在那里,但是我已经尝试了……?.和.*?with每次都是相同的结果. 任何人都有任何想法我做错了什么?
正如马克所说,只需使用
CPAN即可.
#!/usr/bin/env perl use strict; use warnings; use HTML::TreeBuilder; my $s = q{<font size="3"><font color="blue"> SUMMER/WINTER CONFIGURATION FILES</font></font>}; my $tree = HTML::TreeBuilder->new; $tree->parse( $s ); print $tree->find_by_attribute( color => 'blue' )->as_HTML; # => <font color="blue"> SUMMER/WINTER CONFIGURATION FILES</font> 这适用于您的具体情况,但是: #!/usr/bin/env perl use strict; use warnings; my $s = q{<font size="3"><font color="blue"> SUMMER/WINTER CONFIGURATION FILES</font></font>}; print $s =~ m{ < .+? > (.+)? </.+? > }mx; # => <font color="blue"> SUMMER/WINTER CONFIGURATION FILES</font> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |