匹配 style="whatever:0; morestuff:1; otherstuff:3" 的正则表达式。

11
我正在尝试匹配包括和介于style=""之间的任何内容。
例如:style="whatever:0; morestuff:1; otherstuff:3"
4个回答

20

模式将是/style="([^"]*)"/,但根据您使用的语言可能会略有不同。

如果您正在尝试通过JavaScript完成此操作,则使用jQuery会使其变得非常简单:

$("#element-id").attr("style");
如果您想从其他语言实现这个功能,请使用HTML解析库,因为HTML不是规则化的。Python的BeautifulSoup非常好用。

这个方法是可行的,直到你遇到<div style="some stuff here" id="this-div">这样的情况,因为.*是贪婪的,所以你会匹配到some stuff here" id="this-div。你需要使用字符类[^"],它可以匹配除双引号之外的所有内容。 - Benn
在Notepad++中,使用style="([^"]*)"(注意双引号和前导空格)。 - Alexander Dixon

6

待测试字符串

style="whatever:0; morestuff:1; otherstuff:3"

正则表达式

style\s*=\s*"([^"]*)"

第一组内容

whatever:0; morestuff:1; otherstuff:3

注意!

编写基于正则表达式的HTML解析器既困难又容易出错,而且还不够安全和可维护。如果您需要以强大、可靠和安全的方式处理HTML,则应使用真正的HTML解析库,例如jsoup(Java)或Html Agility Pack(C#)。要查找适用于您喜欢的语言的HTML解析器,请搜索:yourlanguage html parser


3
如果您需要从HTML中删除所有样式标签(完全清除内联样式),请使用以下正则表达式:
style=\"[^\"]*\"

这对我来说在 Sublime Text 2-3 中可行。

2
/(style="([^"]*)")/

对于整个字符串(未经测试),您是否想要检索键值对?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接