我正在尝试解决ASP.NET自动命名服务器控件的开销。我有一个页面,其中包含从数百个嵌套的ASP.NET控件呈现的7,000行HTML,其中许多都具有长度为数百个字符的id / name属性。
我理想情况下会将以“ctl00”开头的每个HTML属性值提取到列表中。 Notepad ++中的正则表达式查找功能是完美的,只要我知道正则表达式应该是什么?
例如,如果HTML是:
< input name =“ctl00 $ Header $ Search $ Keywords”type =“text”maxlength =“50”class =“search”/>
我希望输出类似于:
NAME = “ctl00 $头$搜索$关键词”
更高级的搜索也可能包括元素名称(例如控件类型):
输入| name =“ctl00 $ Header $ Search $ Keywords”
为了处理Id和Name属性,我只需重新运行搜索,查找Id而不是Name(即我不需要同时搜索两者的内容)。
最终输出将是一个excel报告,列出页面上的服务器控件数,以及每个控件的名称长度,可能按控件类型排序。
答案 0 :(得分:1)
又快又脏:
搜索
\w+\s*=\s*"ctl00[^"]*"
这将匹配任何看起来像属性的文本,例如name="ctl00test"
或attr = "ctl00longer text"
。它不会检查这是否真的发生在HTML标签中 - 这样做有点困难,也许不必要?它也不会检查标签名称中的转义引号。与正则表达式一样,所需的复杂性取决于您想要匹配的内容以及输入的内容......
答案 1 :(得分:0)
“7000”? “数百名”?亲爱的上帝。
由于您只是在文本编辑器中查看源代码,请尝试此... /(id | name)=“ct [^”] *“/
答案 2 :(得分:0)
回答我自己的问题,最简单的方法是使用BeautifulSoup,这是一个'脏HTML'Python解析器,其标语是:
“你没有写那个糟糕的页面。你只是想从中获取一些数据。现在,你真的不关心HTML看起来是什么样的。这个解析器也没有。 。“
它有效,可以从这里获得 - http://crummy.com/software/BeautifulSoup
答案 3 :(得分:-1)
我建议使用xpath,如此question