如何用Tcl代码提取HTML文件中<h1>和<h2>标签内容?
修正后的Tcl代码及提取逻辑
原代码仅完成了文件读取操作,未实现标签提取逻辑,且最后一行puts $end存在变量未定义的错误。以下是能提取HTML中
和
标签内容的修正代码:
#!/usr/bin/env tclsh # 打开HTML文件并读取内容 set f [open comment.html r] set data [read $f] close $f # 正则匹配所有<h1>、<h2>标签的内容 # 正则规则:匹配带任意属性的h1/h2标签,捕获标签内的文本 regexp -all -inline {<h[12][^>]*>(.*?)</h[12]>} $data matches # 遍历匹配结果,输出标签内容 foreach {full_tag content} $matches { puts $content }
关键说明
- 打开文件时指定
r只读模式,符合代码规范。 - 使用
regexp的-all参数匹配所有符合条件的标签,-inline参数返回包含完整标签和捕获内容的结果列表。 - 正则表达式
{<h[12][^>]*>(.*?)</h[12]>}:<h[12]匹配h1或h2起始标签[^>]*匹配标签内的任意属性(如style)(.*?)非贪婪捕获标签内的文本内容</h[12]>匹配对应的闭合标签
- 通过
foreach遍历结果列表,每两个元素为一组(完整标签和文本内容),最终打印提取到的标签文本。
运行输出
执行后会得到:
metal1 metal2
内容的提问来源于stack exchange,提问作者ktkyin let
相关产品推荐
相关产品推荐

