用正则获取网页中的标签内容
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
⽤正则获取⽹页中的标签内容有个同事想要从html⽹页标签中提取特定内容,让我帮忙看看。
我研究了下,做了个⼩⼯具。
⽬标:匹配出 <p><label id="catalog_FUND">基⾦:</label> 这个p标签⾥⾯的a标签的内容
解决⽅案:由于⼀次性匹配出来,难度太⼤,因此可分为两步⾛,⾸先获取这个p标签⾥⾯的所有a标签,如下图所⽰:
然后,再从这些a标签中获取内容,如图:
正则:
<p><label id="catalog_FUND">基⾦:</label>((<a[^><]*>([^><]*)</a>)*?)</p>
<a[^><]*>([^><]*)</a>
由上⾯正则可以看出,⽤的最多的就是[^><]*不包括尖括号的任意多个字符,?表⽰⾮贪婪模式,表⽰在满⾜匹配的情况下,尽可能少的匹配a标签。
附⼩⼯具的后台代码:
1private void Readtxt_Click(object sender, RoutedEventArgs e)
2 {
3//从当前⽬录获取⽂件
4
5string dir = Environment.CurrentDirectory;
6
7string path = dir + @"\Content.txt";
8
9if (File.Exists(path))
10 {
11var content = File.ReadAllText(path, Encoding.Default);
12
inText.AppendText(content);
14 }
15 }
16
17private void testMatch_Click(object sender, RoutedEventArgs e)
18 {
19 TextRange textRange = new TextRange(orginText.Document.ContentStart, orginText.Document.ContentEnd);
20var content = textRange.Text;
21var pattern = regular.Text;
22
23if (pattern != "" && content != "")
24 {
25if (Regex.IsMatch(content, pattern, RegexOptions.IgnoreCase | RegexOptions.Multiline))
26 {
27 MessageBox.Show("ok");
28var maches = Regex.Matches(content, pattern, RegexOptions.IgnoreCase | RegexOptions.Multiline);
29if (maches.Count > 0)
30 {
31foreach (Match item in maches)
32 {
33if (item.Success)
34 {
35if (item.Groups.Count > 0)
36 {
37 ResultText.AppendText(item.Groups[1].Value);
38 }
39 }
40 }
41 }
42 }
43else
44 {
45 MessageBox.Show("fail");
46 }
47 }
48 }。