0

どうすれば正規表現で以下を抽出できますか?

String string = "<h1>1st header</h1>" + "<h2>second header</h2>" +
"<p>some text</p>" + "<hr />";

Pattern p = Pattern.compile("</h1>(\\S+)<hr />", Pattern.MULTILINE);

出力は空ですが、なぜですか?

4

2 に答える 2

4

</h1>との間の文字に<hr />はスペースが含まれているため、出力は空です。スペース\S+に遭遇するとすぐに失敗します。

たとえば、に置き換える\\S+と、非常に具体的なサンプル文字列.+のすべてをキャッチする必要があります。ただし、これを「正しく」実行し、例に完全に適合しない任意のHTMLに一致させることができるようにする場合は、HTMLAgilityPackなどのHTMLパーサーを使用してくださいパーサーベースのバージョンは簡単で正確であり、正気や宇宙を危険にさらすことはありません。

于 2012-05-15T21:57:03.983 に答える
3

正規表現\S+は、「一部のテキスト」間のスペースと一致しません。また、正気度を重視する場合は、正規表現を使用してHTMLを解析しないでください。

于 2012-05-15T21:54:15.230 に答える