捕捉样式标签的内部内容



我使用下面的正则表达式来捕获所有样式的HTML标签和内部内容:

<style[^>]*>([^<]+)?<[s/]+style>

效果很好,它捕获所有内容,直到结束样式标签,但如果标签内容包含其他标签(例如svg, path),则失败。参见此示例https://regex101.com/r/kEyFED/1

如何避免这种情况并捕获此类内容?

我建议

<style[w="'s-]*>(.*?)</s*style>

这应该与样式标签匹配,并将其内部内容放入组1。它匹配<style></style>之间最少数量的字符。/的转义取决于您使用的语言。

UPDATE:我更新了正则表达式以匹配元素中的属性。这些元素没有以任何形式进行验证,这些东西只是为了使样式标记匹配。如果>包含在属性值中,仍然不能正确匹配。

更新2:结束标签现在允许</style>之间的空白。

最新更新