这是关于解析HTML的内联CSS样式属性。我使用JSoup但是我能够确定JSoup选择不帮助这个......我不确定为什么。这意味着用户必须找出关键字和值等合法字符的规则,即什么构成"正确形成" CSS样式"属性" (这是否是正确的术语?[ 稍后 :不!样式"属性",根据CSSParser]。
无论如何,在提取每个单独的键值对时,我想要做的是用分号分隔它们......但在最后一对中,尾随分号是可选的。但是,允许空格会以字符串的结尾结束。
所以我尝试了这个:
Pattern styleSubattrsPattern = Pattern.compile( "([A-Za-z0-9-]+)\\s*:\\s*([A-Za-z0-9-]+)\\s*[$;]");
...意思是"分号或字符串的结尾"。但它不起作用:最终的键值对不匹配。
后
使用CSSParser确实解决了根本问题。
答案 0 :(得分:2)
使用[$;]
将匹配分号或美元符号,因为[]
中包含的特殊字符将引用字符文字(开头为^
除外)匹配)。
您可能想要的是:((;)|($))
或者,您也可以使用问号来表示可选字符,如果您希望分号后面的行尾:;?$
。
答案 1 :(得分:1)
你可以使用否定的前瞻断言和来做一个否定的字符类:Private Sub ButtonStrip1_Click(sender As Object, e As EventArgs) Handles ButtonStrip1.Click
msgbox("You clicked " & sender.text & ".")
End Sub
这处理两种情况:
(?![^;])
这样:
;
(我添加了占有量词来禁止回溯并避免无用的测试:Pattern styleSubattrsPattern = Pattern.compile( "([A-Za-z0-9-]+)\\s*:\\s*([A-Za-z0-9-]++)\\s*+(?![^;])");
=> *
和*+
=> +
)