-1
Stringから取得する必要のあるデータがあるところでJavaプログラムを作成しています(これは実際にはhtmlです)。次のようにJavaの文字列で同時タグを一致させる
私のコードは次のとおりです。
while ((line = in.readLine()) != null) {
if (line.contains("xrefInternal")) {
String ftnNum = line.replaceAll("(.*)(<sup>)([0-9]+)(</sup>)(.*)", "$3");
String ftnRefNum = line.replaceAll("(.*)(<span class=\"xrefInternal\" id=\"fo)([0-9]+)(\")(.*)", "$3");
System.out.println(ftnRefNum + "\t" + ftnNum);
}
}
これに取り組んでいる間、私は私のファイルに2例に出くわしました。
ケース1
<p class="paraNoIndent1" style="text-indent: 0%;">texy<span class="xrefInternal" id="fo249"><a href="abc.html#fo_249"><sup>2</sup></a></span> Tewxt.<span class="xrefInternal" id="fo250"><a href="abc.html#fo_250"><sup>3</sup></a></span> text</p>
ケース2
<p class="paraNoIndent1" style="text-indent: 0%;">Text.<span class="xrefInternal" id="fo248"><a href="abc.html#fo_248"><sup>1</sup></a></span></p>
Case 1
は何も印刷されません。スキップされます(同じパラメタで2つのデータ要素を取得しようとしているためです)。
Case 2
248 1
次のように予想通りの結果を出力しますRegex Fiddle
私はCase 1
がCase 2
おかげのように機能するようにコードを手直し方法を教えてください
必須リンク:(一般的に)http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags (より具体的に)http://stackoverflow.com/q/701166/1393766 – Pshemo
これは、正規表現を使用してXMLやHTMLを解析しない理由です。 XMLとHTMLは通常の言語ではなく、非常に限られた場合を除いて、正規表現では一般的に解析できません。実際のHTMLパーサーまたはXMLパーサーを使用します。 –