これは、HTMLのインラインCSSスタイルプロパティの解析についてです。私はJSoupを使用していますが、これまでJSoupがこれを手伝っていないことを確認できていれば...理由はわかりません。これは、ユーザーがキーや値などの正当な文字のルール、つまり「正しく形成された」CSSスタイルの属性を構成するもの(正確な用語であっても正しいものであることを意味するもの)を見つける必要があることを意味します(後: !style "properties"、CSSParserによる])。regex way to say "セミコロンまたは文字列の終わりのいずれか"
とにかく、個々のキーと値のペアを抽出する際に、セミコロンで区切るのですが、末尾のセミコロンはオプションです。しかし空白を許すと、文字列の最後で終了します。
だから私はこれを試してみました:
Pattern styleSubattrsPattern = Pattern.compile("([A-Za-z0-9-]+)\\s*:\\s*([A-Za-z0-9-]+)\\s*[$;]");
...「セミコロンまたは文字列のどちらかの端部」を意味することを意図。しかし、それは動作しません:最終的なキーと値のペアは一致しません。
後で
根本的な問題は、実際にCSSParserを使用することによって解決しました。 []
内の特殊文字を囲むこと(逆試合のため、開始時^
を除く)リテラル文字を代わりに参照するよう[$;]
を使用して
'([^;?! ]) '' 'にマッチさせたくない場合は、このトリックを行うべきである(それは、'; '*ではない文字が続くことを意味する*) –
面白そうだ... Tx説明のために...ちょうど私の頭の周りを取得しようとしているで! –
実際、イタリック体のフレーズは、必要なものを正確に要約しています...おそらく、ブラウザのアルゴリズムがこれを解析する方法に対応しています。 –