C# 用于过滤html的正则表达式
我想要一个正则表达式来过滤html。规则是:从html字符串中删除所有标记,除了C# 用于过滤html的正则表达式,c#,html,regex,filter,C#,Html,Regex,Filter,我想要一个正则表达式来过滤html。规则是:从html字符串中删除所有标记,除了li标记(如果li中有内容) 什么是正确的正则表达式 源字符串: <td>1</td><li>2</li><li></li> 12 预期结果: 1<li>2</li> 12 一些丑陋的方法: $html = 'SOME HTML CODE'; $html = str_replace('<li></l
li
标记(如果li
中有内容)
什么是正确的正则表达式
源字符串:
<td>1</td><li>2</li><li></li>
12
预期结果:
1<li>2</li>
12
一些丑陋的方法:
$html = 'SOME HTML CODE';
$html = str_replace('<li></li>', '', $html);
$html = str_replace('<li>', '__LI_START__', $html);
$html = str_replace('</li>', '__LI_END__', $html);
$html = strip_tags($html);
$html = str_replace('__LI_START__', '<li>', $html);
$html = str_replace('__LI_END__', '</li>', $html);
$html='一些html代码';
$html=str_replace(“”,“$html”);
$html=str\u replace(“”、“\li\u START”、$html);
$html=str\u replace(“ ”、“\u li\u END”、$html);
$html=带标签($html);
$html=str_replace(“'LI_START',',$html”);
$html=str_replace(“'LI_END',' ”,$html);
如果我理解正确的话,它可以完成任务(虽然它很难看,但regex或一些XML工具是更好的选择)。我可以知道您使用的是什么编程语言吗? 例如在python中
import re
html = '<td>1</td><li>2</li><li></li>'
//Replacing the content of the tags by variable
html = re.sub('<((?!li).)+>(?P<var>[^<>]*)</((?!li).)+>', '\g<var>', html)
//Cleaning the blank li
html = re.sub('<li>\\s*</li>', '', html)
print html
>> 1<li>2</li>
<((?!li).)+> means all tags except <li> tag
重新导入
html='12 '
//用变量替换标记的内容
html=re.sub('(?P[^]*)','\g',html)
清洁毛坯
html=re.sub('\\s* ','',html)
打印html
>>12
表示除标记以外的所有标记
如果使用C,正则表达式看起来有点像:
@"(?<=\<li.*\>)(.*?)(?=\</li\>)"
@”(?困惑…html代码是什么?编辑后代码可见。通常正确的答案是使用正确的工具进行工作。请参阅您选择的语言是否没有html解析器?您的示例“源html”中没有
标记,因此不清楚您的意思。在任何情况下,对“我想要一个正则表达式来过滤html”是“不要使用正则表达式来过滤html。使用html解析器。”你不用说你在用什么语言编程,但很有可能它至少在html解析库中得到了。@TrueWill+1用于链接到“all is lost”答案之外的内容,我过去认为这个答案很有趣。