0

我需要一些帮助来编写一个正则表达式,如果它具有内联样式,它可以找到一个 span 标签。

到目前为止,我已经得到了 ] style=[\"'][^\"'] [\"']*|/)?> ,它确实找到了一个具有内联样式的跨度标签。它只有在存在时才能检测到跨度标签其中的内联样式,但不是匹配的结束跨度标签请查看屏幕截图,其中显示了它在示例文本中检测到的所有内容在此处输入图像描述

正如您在屏幕截图中看到的,它检测到的第一件事是我不想要的“”。我只想在跨度标记及其相应的结束跨度标记中存在内联样式时工作。

有人可以帮我做些什么改变才能得到我想要的吗?

这里的想法是我试图只在标签中存在内联样式时才删除标签,但如果有一个带有类的 span 标签,那就没问题了。

4

1 回答 1

2

肥皂盒

我们可以制作一个正则表达式来匹配您的特定情况,但鉴于这是 HTML 解析,可能有任意数量的边缘情况未被正则表达式拾取。您最好使用 DOM 或使用HTML Agility 之类的产品(免费)

然而

如果您有捕捉比赛的基本需要,那么您可以尝试:

((<span\b[^>]*\s\bstyle=(["'])([^"]*)\3[^>]*>)(.*?)</span>)

我正在填充以下组:

  1. 获取从开始到结束标记的整个字符串
  2. 获取整个打开标签
  3. 获取样式值的打开单/双引号。这在正则表达式之外可能没用,但我使用它确保我在 Ref 1 的值字符串末尾捕获正确的结束 qoute。
  4. 获取在样式键/值集中找到的值
  5. 获取 span 标签内的所有字符。

请注意,如果有嵌套的 span 标签,这将中断。 在此处输入图像描述

在此处输入图像描述

于 2013-05-15T13:47:09.483 回答