使用XRegExp.matchRecursive进行嵌套跨度

Gan*_*bin 5 html javascript regex xregexp

我想实现一种方法来获取一个开放范围标记和它的关闭标记之间的所有内容.问题是,有时我可以嵌套跨度,我想确保我的正则表达式不会停止它看到的第一个结束跨度.

要查看我的问题,请看:Regex101:嵌套跨度

我想确保我得到open和close标签之间的所有内容.无论</span>我在里面找到多少.

我找到了Steven Levithan制作的图书馆,可以满足我的需求.我遇到的问题是这个例子是基本的,我不确定我能达到我想要的.

我正在使用XregExp.matchRecursive方法.在示例中,它们提供了开始标记和结束标记.我的开始标签有点复杂,看起来像这样:<span style=\\?"color:([a-zA-Z\s]*?)\\?">.问题是,当我使用此分隔符执行此方法时,我收到此错误:string包含不平衡分隔符.测试的字符串是:

<p style=\"text-align:justify\">
    <span style=\"font-size:12pt\">
        <span style=\"color:Green\">
            <span style=\"font-family:Verdana\">There is some content for a mm advertisment.There is some co</span>
            <span style=\"font-family:Times New Roman\">ntent for a mm advertisment.</span>
        </span>
    </span>
</p>
Run Code Online (Sandbox Code Playgroud)

我认为我的问题是因为我用作起始分隔符的正则表达式.正如文档中的解释,我们应该在正则表达式中添加一个转义反斜杠的级别.这就是为什么我尝试这个正则表达式作为起始分隔符:<span style=\\\\?"color:([a-zA-Z\\s]*?)\\\\?">.还是行不通.我不知道如何告诉这个方法找到具有颜色样式属性的span和他的close标签之间的所有内容.

也许有人有解决方案?

ran*_*mon 1

因此,您遇到的块是错误“字符串包含不平衡的分隔符”。

这是因为您的开始分隔符仅与测试输入中的开始范围标签之一(指定颜色的标签)匹配,但结束分隔符与所有四个结束范围标签匹配。

我认为您必须首先将所有跨度标签(与您找到的库)匹配,然后重新处理以找到您关心的标签来解决此问题。