正则表达式:如何在文本之间获取某些内容,除了其他文本之间的内容

时间:2015-11-23 10:16:54

标签: javascript html regex regex-negation

好的,这是一种技巧。我有这样的文字:

<something>
   <h1> quoiwuqoiuwoi aoiuoisquiooi

       <script> dsadsa  dsa </script>

       Some text here in the middle! =)   

       <script> dsadsa  dsa </script>

   </h1>
</something>

我想只获得没有标签的内容,换句话说:

   <h1> quoiwuqoiuwoi aoiuoisquiooi


       Some text here in the middle! =)   


   </h1>

包括标签。

做了一些研究我发现我可以使用以下正则表达式获取h1标签之间的所有内容:

   /<h1([^]*)h1>/

然而,我找不到一种方法来排除标签之间的问题。包括脚本标签本身。任何帮助都会得到很大的帮助。

如果有人想知道我为什么需要这个,这里有一个简短的解释:

我正在使用此代码使用googleSpreadSheet来搜索网站上的某些数据:

function doGet() {
  var html = UrlFetchApp.fetch('https://www.nespresso.com/br/pt/product/maquina-de-cafe-espresso-pixie-clips-c60-preta-e-lima-neon-110v').getContentText();
  var regExp = new RegExp("<h1([^]*)h1>", "gi");
  var h1 = regExp.exec(html);
  Logger.log(h1);
  var doc = XmlService.parse(h1[0]);
  var html = doc.getRootElement();
  var menu = getElementsByClassName(html, 'nes_pdp-title nes_pdp-title-sep-none')[0];
  var output = menu.getText();
  Logger.log(output);
}

解析脚本标记和iframe时遇到问题。我能找到的唯一解决方案是从它们中删除代码。如果有人有更好的解决方案,我会全力以赴。

如果我不删除脚本和iframe标记,代码会在我调用.getElementsByTagName之前中断。当我使用.XmlService()时它会中断。如果它没有javascript或iframe标记,我只能将一个valeu传递给XmlSevive()。 再次感谢你!

0 个答案:

没有答案