gpt4 book ai didi

c# - Javascript RegEx 不会工作,但在 c# 中工作(原子子表达式)

转载 作者:太空宇宙 更新时间:2023-11-03 20:39:50 24 4
gpt4 key购买 nike

我在 Expresso 中测试了一个正则表达式,效果非常好。但是当我尝试在 javascript 中使用它时出现错误。 Firebug 说:

invalid quantifier ?><div\b[^>]*>(?<DEPTH>)|<\/div>(?<-DEPTH>)|.?)*(?(DEPTH)(?!))<\/div>

正则表达式:

<div\b[^>]*>(?><div\b[^>]*>(?<DEPTH>)|</div>(?<-DEPTH>)|.?)*(?(DEPTH)(?!))</div>

正则表达式匹配嵌套的 html-div,例如:

<div id="foo"><div>blubb</div><div foobar>blubb</div></div>

javascript 正则表达式只是一个子集吗?

编辑:我必须去掉 div,包括它们之间的文本。

<div id="foo"><div>blubb</div><div foobar>blubb</div></div>some
non html...

只有“一些非 html...”应该保留。所以我想我不能使用任何 htmlparser?

最佳答案

Is the javascript regex only a subset?

不,它们不同 - 有各种各样的正则表达式引擎,它们各自有不同的特性/怪癖。

C# 比 JavaScript 有更多的特性,但是 JS 的特性不是从 C# 派生的,所以它不是一个子集。

这里有几页记录了差异:

整个网站 ( regular-expressions.info) 非常值得浏览以了解有关正则表达式的更多信息。


The regex matches nested html-divs

它可能不会,并非在所有情况下。

而且对于单个 JS 正则表达式来说肯定是不可能的,因为它不支持深度内容等等。

您为此工作使用了错误的工具 - 解析 HTML 应该使用适当的 HTML 解析器/选择器来完成,然后分析 DOM 以找到嵌套的 div。

任何实现 Sizzle 的东西应该做的(即 jQueryDojo Toolkit 等)。

例如,类似 jQuery('div:has(div)') 的内容或 dojo.query('div:has(div)')或类似的,应该找到嵌套的 div(即选择其中嵌套了一个 div 的所有 div),并且将正确处理各种怪癖,如果使用单个正则表达式不是不可能的话,这些怪癖可能很复杂。


edit: I have to strip the div's, including the text between them, away.
<div id="foo"><div>blubb</div><div foobar>blubb</div></div>some
non html...

only the "some non html..." should stay. So I think I can't use any htmlparser?

不 - 这是使用 HTML 解析器的更多理由,而不是尝试困惑的正则表达式破解。

jQuery('#foo div').remove()

这将删除所有子 DIV,并保留 HTML 文本节点。

根据您的具体要求,选择器可能需要更改,但这对于旨在理解 HTML 的工具来说绝对是一项任务。

关于c# - Javascript RegEx 不会工作,但在 c# 中工作(原子子表达式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3492912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com