Regex 如何创建正则表达式以匹配内部所有内容,包括<;div></部门>;?
这是我正在处理的示例文本。我用尾波来寻找和替换Regex 如何创建正则表达式以匹配内部所有内容,包括<;div></部门>;?,regex,html-parsing,Regex,Html Parsing,这是我正在处理的示例文本。我用尾波来寻找和替换 <td width="20%"><div > Item #</div></td> <td width="20%"><div > Pole Tip</div></td> <td width="20%"><div > Length</div></td> <td width="20%"><div
<td width="20%"><div > Item #</div></td>
<td width="20%"><div > Pole Tip</div></td>
<td width="20%"><div > Length</div></td>
<td width="20%"><div > Test Weight (lbs.)</div></td>
<td width="20%"><div > Price</div></td>
项目#
杆尖
长度
试验重量(磅)
价格
我想去掉在td中标记文本的div标记
我想改变这个:
<td width="20%"><div > Item #</div></td>
项目#
为此:
<td width="20%">Item #</td>
项目#
到目前为止,我将此作为正则表达式:
<div >[\s\w\(\)#]*</div>
[\s\w\(\)\]*
但是,这与我的示例文本中的上述所有内容相匹配,除了:
<td width="20%"><div > Test Weight (lbs.)</div></td>
试验重量(磅)
在我的正则表达式中,我甚至尝试添加(和)…我做错了什么?那是因为你错过了
这很好
<div >[\s\w\(\)#.]*</div>
[\s\w\(\)\。]*
作为对Andy的回复,我同意格式良好的标记的数据解析应该保留给DOM导航工具。当然是XML,或者HTML>XML转换器都很好。我不知道Miles使用的是什么,但我经常使用格式非常不正确的HTML,以至于标记解析器无法解析它
在我的一些关于文档解析的正则表达式教程中,我讨论了正则表达式修剪模式,它只是零个或多个空格{\s*}。尽管您可能会回避它,因为它为Regex模式增加了一点点长度,但实际上效率损失为零。话虽如此
(<td[^>]*>)\s*<div[^>]*>\s*((?:[^<]*(?(?!</div>\s*</td>)<))*)\s*</div>\s*(</td>)
(]*>)\s*]*>\s*(?:[^虽然正则表达式可能适用于此特定代码,但正则表达式是解析HTML代码的脆弱解决方案。解释了原因。更安全的解决方案是使用适当的HTML解析器。您使用的是什么语言?@AndyLester:我继承了一些我正试图清理的HTML。我使用Coda作为编辑器,我想进行全局搜索和替换。所以我“句点”缺少“.”?Doh!为什么我不必转义“.”?如果它在字符类中,则不需要转义它。如果不需要正则表达式中的TD包装器,您还将删除页面上所有的div标记。此外,如果有%symbol?或除磅以外的任何其他符号,该怎么办?这是一个奇怪的限制字符c如果答案是你只是在替换你的例子中的确切文本,那么甚至不用正则表达式,只使用字符串文字替换。这个正则表达式非常脆弱。