删除包含模式的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>