正则表达式(PSPad)匹配标签并提取其内容,即使它包含标签

时间:2015-09-25 09:58:31

标签: html regex tags nested pspad

在PSPad中,我使用正则表达式来匹配HTML标记的内容。问题是这些标签可以包含其他标签(但从不自己)。

包装标签可以是任何标题(h1-6)或段落(p)。我已经设法创建工作正则表达式以匹配没有其他标签的内容。

<(h[1-9]|p)([^>]*)>([^<]*)</(h[1-9]|p)>

但是这与例如

<p><a href="#someLink">aaa</a> something else...</p>

我知道我需要以某种方式否定整个小组到目前为止我已经尝试了这两个(没有成功):

<(h[1-9]|p)([^>]*)>(^(</(h[1-9]|p)))*</(h[1-9]|p)>
<(h[1-9]|p)([^>]*)>(!(</(h[1-9]|p)))*</(h[1-9]|p)>

那么如何正确否定整个群体/“词”? 我知道我需要从内部匹配中排除</h1</h6</p,但我无法弄明白。

非常感谢任何帮助/解决方案/指导/指导 - 谢谢! : - )

PS:PSPad不执行多行regexp(无关紧要,但需要考虑)

1 个答案:

答案 0 :(得分:0)

我找到了解决方案 - 这很简单,而且#34;愚蠢&#34;,因为我知道包装标签不会包含(嵌套)自己...所以这个与开始和结束标记之间的任何内容匹配的正则表达式是enaugh:

var svgContainer = d3.select("body").append("svg")
                                  .attr("width", 200)
                                  .attr("height", 200);

svgContainer.append("circle")
                        .attr("cx", 40)
                        .attr("cy", 40)
                        .attr("r", 20);

var valuesMatrix = [];
  valuesMatrix[0] = [35, 21, 45, 71, 51, 32];

svgContainer.selectAll("circle")
    .data(valuesMatrix);

svgContainer.append("rect")
                   .attr("x", 90)
                   .attr("y", 10)
                   .attr("width", 80)
                   .attr("height", 20)
                   .on("click", function(d) {
                          var selectedGroups = d3.selectAll("circle")
                              .transition()
                              .attr("r", function(d) { 
                                    var myData = d3.select(this).datum();
                                    // return d[0];
                                    return myData[0];
                                } )
                          .duration(2000);
                     });