ここに私が本当に理解できないものがあります。Androidの正規表現が一致しません
私は、次の文字列から日付部分を取得したいと思います:
<th>Elkezdodott</th>
<td>2016. december 20., 19:29</td>
だから私は、次のコードを使用します。
System.out.println(html);
Pattern p = Pattern.compile("\\p{Punct}th\\p{Punct}Elkezdodott\\p{Punct}{2}th\\p{Punct}\\p{Space}*" +
"\\p{Punct}td\\p{Punct}" +
"(\\d{4}\\p{Punct}\\p{Space}*[a-zA-Z]*\\p{Space}*\\d*\\p{Punct}{2}" +
"\\p{Space}*\\d{2}\\p{Punct}\\d{2})\\p{Punct}{2}td\\p{Punct}");
Matcher m = p.matcher(html);
if(m.matches()){
System.out.println("matches");
System.out.println(m.group());
}
この正規表現は、チェック正規表現オプションに従って正しいようですAndroidスタジオ:
のSystem.out.println(HTML)の結果は、あなたが画像で見ることができるとまったく同じである:
06-03 11:49:15.779 4581-5229/hu.lyra.moly_kihivasok I/System.out: <th>Elkezdodott</th>
06-03 11:49:15.779 4581-5229/hu.lyra.moly_kihivasok I/System.out: <td>2016. december 20., 19:29</td>
私は本当に理解していない、何が理由メートルです。 matches()はfalseを返します。私もm.find()を試しましたが、私は同じ結果を得ました。私は何か見落としてますか?
ありがとうございました。
後で頭痛を軽減する助言:正規表現はHTMLを解析するのに適したツールではありません。 – Henry
ありがとうございます。解決策が見つからない場合、私は他の可能性を探します。あなたは何か提案がある場合は、後ろを押さないでください。 :) – Lyra