................
................
open(my $FILE, "<", "$dfn");
binmode($FILE);
@lines = <$FILE>;
close($FILE);
$data = join ('', @lines);
foreach (0 .. $#lines) {
if ($lines[$_] =~ m#Wingdings.*?>(.*?)<.*>#i) {
$Wingdings_text_fetch = $1;
if(!$Wingdings_text_fetch){
if ($lines[$_] =~ m#Wingdings.*>(.*)<#i){
$Wingdings_text_fetch = $1;
}
}
elsif ($lines[$_] =~ m#Webdings.*?>(.*?)<.*>#i) {
$Webdings_font_text_fetch = $1;
if(!$Webdings_font_text_fetch){
if ($lines[$_] =~ m#Webdings.*>(.*)<#i){
$Webdings_font_text_fetch = $1;
}
}
elsif ($lines[$_] =~ m#Symbol.*?>(.*?)<.*>#i) {
$Symbol_font_text_fetch = $1;
if(!$Symbol_font_text_fetch){
if ($lines[$_] =~ m#Symbol.*>(.*)<#i){
$Symbol_font_text_fetch = $1;
}
}
#....................some more task...............#
}
以上情况适用于以下情况。
宋体:
<p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span
style='font-size:13.0pt;mso-bidi-font-family:Arial;color:#000099'><a
href="#terug"><span style='font-family:Wingdings;mso-ascii-font-family:Arial;
mso-hansi-font-family:Arial;mso-char-type:symbol;mso-symbol-font-family:Wingdings'><span
style='mso-char-type:symbol;mso-symbol-font-family:Wingdings'>Ç</span></span></a></span></b><span
style='font-size:13.0pt;mso-bidi-font-family:Arial'><o:p></o:p></span></p>
符号:
<p class=MsoListParagraph style='margin-top:1.0pt;margin-right:0cm;margin-bottom:
1.0pt;margin-left:1.0cm;text-indent:-14.15pt'><span style='font-size:10.0pt;
font-family:Symbol;color:black'>·</span><span style='font-size:7.0pt;
color:black'> </span><span
style='font-size:10.0pt;font-family:"Arial","sans-serif";color:black'>some text</span></p>
但在以下情况下失败(主要是由于多线)。
<p class=MsoListParagraph style='margin-top:1.0pt;margin-right:0cm;margin-bottom:
1.0pt;margin-left:1.0cm;mso-add-space:auto;text-indent:-14.15pt;mso-list:l5 level1 lfo35'><![if !supportLists]><span
style='font-size:10.0pt;font-family:Symbol;mso-fareast-font-family:Symbol;
mso-bidi-font-family:Symbol;color:black;mso-ansi-language:NL-BE'><span
style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>
</span></span></span><![endif]><span style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:black;mso-ansi-language:NL-BE'>some text here.<o:p></o:p></span></p>
关于什么应该是正则表达式的任何想法也包括最后一个案例?由于我在脚本中逐行检查,因此我无法在那里使用多行正则表达式。
答案 0 :(得分:3)
我建议不要使用正则表达式来解析HTML。
而是使用实际的html解析器,如HTML::TreeBuilder
或我个人最喜欢的Mojo::DOM
。甚至还有一个很好的8分钟视频,介绍如何在Mojocast Episode 5
使用后者。
答案 1 :(得分:2)
试试这个正则表达式:
font-family:(Wingdings|Webdings|Symbol).+?>([^<>]+)#is
要处理多行,请使用s
修饰符,以便.
匹配换行符。