Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.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
删除包含模式的HTML元素_Html_Regex_Sed - Fatal编程技术网

删除包含模式的HTML元素

删除包含模式的HTML元素,html,regex,sed,Html,Regex,Sed,如何删除文本中包含模式的元素(从到)?元素的内容应与元素一起删除 例如,我想删除以下内容中的第一个…元素: <span><SPAN>some text with with </SPAN> a PATTERNin it etc</span><span><SPAN>some text without </SPAN> a thingIn it etc</span> 如果是HTML: perl -MXML:

如何删除文本中包含
模式
的元素(从
)?元素的内容应与元素一起删除

例如,我想删除以下内容中的第一个
元素:

<span><SPAN>some text with
with </SPAN> a PATTERNin it etc</span><span><SPAN>some text
without </SPAN> a thingIn it etc</span>
如果是HTML:

perl -MXML::LibXML -e'
   my $parser = XML::LibXML->new();
   my $doc = $parser->parse_html_file($ARGV[0]);
   $_->unbindNode()
      for $doc->findnodes(q{//span[contains(text(), "PATTERN")]});

   binmode(STDOUT);
   print($doc->toString());
' in.html >out.html
如果是XHTML:

perl -MXML::LibXML -e'
   my $parser = XML::LibXML->new();
   my $doc = $parser->parse_file($ARGV[0]);
   my $xpc = XML::LibXML::XPathContext->new();
   $xpc->registerNs( h => "http://www.w3.org/1999/xhtml" );
   $_->unbindNode()
      for $xpc->findnodes(q{//h:span[contains(text(), "PATTERN")]}, $doc);

   binmode(STDOUT);
   print($doc->toString());
' in.xhtml >out.xhtml
上述两种方法都产生了以下结果(一些隐含的元素生动化):

一些文本
没有任何东西在里面等

什么是“应答器”?期望的输出应该是什么样子?您的描述不清楚。你这么说是什么意思?你试了什么?展示你的努力,做出一个新的决定。增加清晰度、结果和进步。如果是XHTML的话,可能会尝试编写一个基于sed的解析器来取乐(以显示它有多么愚蠢),但是HTML要复杂得多,你说你甚至没有HTML?你希望我们如何解析它呢?我明白你的意思(很好),但我在一个服务器上,不能使用perl,只能使用标准的bash命令……1)我以为你想使用
sed
,而不是
bash
?2) 我没有在
bash
(那会很愚蠢)或
sed
(可能甚至不可能)中编写HTML解析器。sed在我允许的命令范围内。遗憾的是,我不能为生产服务器选择一切。。。
perl -MXML::LibXML -e'
   my $parser = XML::LibXML->new();
   my $doc = $parser->parse_html_file($ARGV[0]);
   $_->unbindNode()
      for $doc->findnodes(q{//span[contains(text(), "PATTERN")]});

   binmode(STDOUT);
   print($doc->toString());
' in.html >out.html
perl -MXML::LibXML -e'
   my $parser = XML::LibXML->new();
   my $doc = $parser->parse_file($ARGV[0]);
   my $xpc = XML::LibXML::XPathContext->new();
   $xpc->registerNs( h => "http://www.w3.org/1999/xhtml" );
   $_->unbindNode()
      for $xpc->findnodes(q{//h:span[contains(text(), "PATTERN")]}, $doc);

   binmode(STDOUT);
   print($doc->toString());
' in.xhtml >out.xhtml
<span><SPAN>some text
without </SPAN> a thingIn it etc</span>