使用XRegExp.matchRecursive用于嵌套的跨
Using XRegExp.matchRecursive for nested spans
我想实现一种方法来获得所有的内容之间的一个开放的span标签和它的关闭标签。问题是,有时我可以有嵌套的跨度,我想确保我的正则表达式不停止第一个结束跨度它看到。
Regex101: nested span我想确保我得到了打开和关闭标记之间的所有内容。不管我能找到多少</span>
我找到了一个由Steven Levithan制作的图书馆,它可以满足我的需要。我的问题是,这些例子是基本的,我不确定我能实现我想要的。
我正在使用XregExp。matchRecursive方法。在这个例子中,他们给出了一个开始标签和一个结束标签。我的起始标签有点复杂,它看起来是这样的:<span style=''?"color:([a-zA-Z's]*?)''?">
。问题是当我用这个分隔符执行这个方法时,我得到这个错误:字符串包含不平衡的分隔符。测试的字符串是:
<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>
我认为我的问题是因为我使用的正则表达式作为开始分隔符。正如文档中所解释的,我们应该在正则表达式中添加一级转义反斜杠。这就是为什么我尝试这个正则表达式作为开始分隔符:<span style=''''?"color:([a-zA-Z''s]*?)''''?">
。还是不行。我不知道怎样才能让这个方法找到span中有color style属性和关闭标签之间的所有内容
也许有人有解决办法?
所以你碰到的块是错误"字符串包含不平衡的分隔符"。
这可能是因为您的开始分隔符只匹配测试输入中的一个开始span标记(指定颜色的那个),但是您的结束分隔符匹配所有四个结束span标记。
我认为您必须首先匹配所有 span标签(使用您找到的库),然后重新处理以找到您关心的标签。
是否可以选择使用某种比正则表达式更强大的解析器?一般来说,后者并不真正适合解析非正则语言,尽管它们在理论上可能提供了与"纯"正则表达式相比的某些扩展。
- 用于搜索的聚合物嵌套绑定
- 设置'dependensOn'用于keystoneJS中的嵌套字段
- 类名,用于查找嵌套标记名并在Javascript中赋值
- 用于动态创建对象的嵌套循环
- 验证嵌套在ng中的输入元素repeat也用于页面加载,而不仅仅用于更改
- JavaScript查找属性是用于重复属性名称的嵌套对象
- 使用数组中的嵌套对象在AngularJS中切换用于动态选择菜单的数据模型
- AngularJs ng-repeat order通过不适用于嵌套对象属性
- Javascript 多个嵌套 if 语句不适用于 Rails 代码
- 嵌套表单,用于禁用带有选择框 HTML 的文本字段
- Ramda js:用于具有嵌套对象数组的深度嵌套对象的镜头
- JavaScript Regex 用于匹配嵌套方括号内的任何单词
- emberJS 2:用于操作的嵌套关系资源(更新和删除)
- 角度 UI 路由器 - 嵌套路由不适用于具有嵌套状态的模板
- 此操作器用于嵌套函数
- 用于点击劫持的嵌套iframe
- 用于创建层次结构的嵌套函数
- Photoshop/JavaScript脚本,用于清理嵌套层.递归函数需要foreach选项
- 用于显示错误结果的JavaScript嵌套
- ng样式不适用于嵌套对象