【问题标题】:Regular Expression to find span tag with inline style正则表达式查找具有内联样式的 span 标签
【发布时间】:2013-05-16 00:47:30
【问题描述】:

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

到目前为止,我有 ]style=[\"'][^\"'][\"']*|/)?> 确实找到了具有内联样式的 span 标签。 仅当其中有内联样式但不能检测到匹配的结束跨度标签时,它才能检测到跨度标签 请查看屏幕截图,其中显示了它在示例文本中检测到的所有内容

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

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

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

【问题讨论】:

    标签: asp.net regex html inline-styles


    【解决方案1】:

    肥皂盒

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

    然而

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

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

    我正在填充以下组:

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

    请注意,如果有嵌套的 span 标签,这将中断。

    【讨论】:

    • 谢谢。我试过了,但即使使用像 这样的示例测试字符串,它也根本不起作用
    • 对不起,我回来引用第 1 组而不是第 3 组。现在已更正
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    相关资源
    最近更新 更多