Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于过滤html的正则表达式_C#_Html_Regex_Filter - Fatal编程技术网

C# 用于过滤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

我想要一个正则表达式来过滤html。规则是:从html字符串中删除所有标记,除了
li
标记(如果
li
中有内容)

什么是正确的正则表达式

源字符串:

<td>1</td><li>2</li><li></li>
1
  • 2
  • 预期结果:

    1<li>2</li>
    
    1
  • 2

  • 一些丑陋的方法:

    $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='1
  • 2
  • ' //用变量替换标记的内容 html=re.sub('(?P[^]*)','\g',html) 清洁毛坯 html=re.sub('
  • \\s*
  • ','',html) 打印html >>1
  • 2
  • 表示除
  • 标记以外的所有标记
  • 如果使用C,正则表达式看起来有点像:

    @"(?<=\<li.*\>)(.*?)(?=\</li\>)"
    

    @”(?困惑…html代码是什么?编辑后代码可见。通常正确的答案是使用正确的工具进行工作。请参阅您选择的语言是否没有html解析器?您的示例“源html”中没有
    标记,因此不清楚您的意思。在任何情况下,对“我想要一个正则表达式来过滤html”是“不要使用正则表达式来过滤html。使用html解析器。”你不用说你在用什么语言编程,但很有可能它至少在html解析库中得到了。@TrueWill+1用于链接到“all is lost”答案之外的内容,我过去认为这个答案很有趣。