上述文本为不规则形式(即没有进行格式化的状态,比较混乱,看不出格式来,并且存在 换行现象)
同样的文本,如图2
上述文本经过格式化,是完整的一段代码,并且以一行显示,中间 不存在换行(由于长度原因,没有完全显示出来,我列在下方)
<td width="20%" style='width:20.0%;border:solid windowtext 1.0pt;border-top:none;mso-border-top-alt:solid windowtext .75pt;mso-border-alt:solid windowtext .75pt;padding:0cm 0cm 0cm 0cm;height:22.5pt'><p class=MsoNormal align=center style='text-align:center;mso-pagination:widow-orphan'><span style='font-size:9.0pt;font-family:宋体;mso-bidi-font-family:宋体;color:#0066CC;mso-font-kerning:0pt'>段见忠</span><span lang=EN-US style='font-size:9.0pt;font-family:宋体;mso-bidi-font-family:宋体;mso-font-kerning:0pt'><o:p></o:p></span></p></td>
请注意,上述html代码在我的vs开发工具中不存在换行现象。
使用同样的正则表达式(也同样没有换行现象)去匹配,如果html上述代码不存在换行现象(如图2)则可以进行匹配到数据,但如果使用了图1的html代码则无法匹配到数据,初步判断由于html存在换行符不匹配我的正则表达式,但不知道如何处理,请各位大神指导下,谢谢
附我的正则(代码中不存在换行):<td width=\"20%\" style='width:20.0%;border:solid windowtext 1.0pt;border-top:none;mso-border-top-alt:solid windowtext .75pt;mso-border-alt:solid windowtext .75pt;padding:0cm 0cm 0cm 0cm;height:22.5pt'><p class=MsoNormal align=center style='text-align:center;mso-pagination:widow-orphan'><span style='font-size:9.0pt;font-family:宋体;mso-bidi-font-family:宋体;color:#0066CC;mso-font-kerning:0pt'> (?<testTitle3>.*)</span><span lang=EN-US style='font-size:9.0pt;font-family:宋体;mso-bidi-font-family:宋体;mso-font-kerning:0pt'><o:p></o:p></span></p></td>
标红处为仅有的和html代码不同的部分,用于数据抓取
写的有些乱,但是比较着急,在线等,欢迎前来指导~
目前已知\s处理换行符,但不知道能否应用到我的需求中
4 个解决方案
#1
<td\s+[^>]*>\s*<p\s+[^>]*>\s*<span\s+[^>]*>(?<testTitle3>[\s\S]*?)</span>[\s\S]*?</td>
#2
\s 任何不可见字符
\S 任何可见字
\S 任何可见字
#3
string html = @"<td width=""20%"" style='width:20.0%;border:solid windowtext 1.0pt;border-top:none;mso-border-top-alt:solid windowtext .75pt;mso-border-alt:solid windowtext .75pt;padding:0cm 0cm 0cm 0cm;height:22.5pt'><p class=MsoNormal align=center style='text-align:center;mso-pagination:widow-orphan'><span style='font-size:9.0pt;font-family:宋体;mso-bidi-font-family:宋体;color:#0066CC;mso-font-kerning:0pt'>段见忠</span><span lang=EN-US style='font-size:9.0pt;font-family:宋体;mso-bidi-font-family:宋体;mso-font-kerning:0pt'><o:p></o:p></span></p></td>";
string patten = @"<td\s+[^>]*>\s*<p\s+[^>]*>\s*<span\s+[^>]*>(?<testTitle3>[\s\S]*?)</span>[\s\S]*?</td>";
foreach (Match m in Regex.Matches(html, patten))
{
Console.WriteLine(m.Groups["testTitle3"].Value);
}
#4
非常感谢,可用。
#1
<td\s+[^>]*>\s*<p\s+[^>]*>\s*<span\s+[^>]*>(?<testTitle3>[\s\S]*?)</span>[\s\S]*?</td>
#2
\s 任何不可见字符
\S 任何可见字
\S 任何可见字
#3
string html = @"<td width=""20%"" style='width:20.0%;border:solid windowtext 1.0pt;border-top:none;mso-border-top-alt:solid windowtext .75pt;mso-border-alt:solid windowtext .75pt;padding:0cm 0cm 0cm 0cm;height:22.5pt'><p class=MsoNormal align=center style='text-align:center;mso-pagination:widow-orphan'><span style='font-size:9.0pt;font-family:宋体;mso-bidi-font-family:宋体;color:#0066CC;mso-font-kerning:0pt'>段见忠</span><span lang=EN-US style='font-size:9.0pt;font-family:宋体;mso-bidi-font-family:宋体;mso-font-kerning:0pt'><o:p></o:p></span></p></td>";
string patten = @"<td\s+[^>]*>\s*<p\s+[^>]*>\s*<span\s+[^>]*>(?<testTitle3>[\s\S]*?)</span>[\s\S]*?</td>";
foreach (Match m in Regex.Matches(html, patten))
{
Console.WriteLine(m.Groups["testTitle3"].Value);
}
#4
非常感谢,可用。