1

私はウェブページから読み、メタから最終更新日を取得しようとしています。例えば

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta http-equiv="last-modified" content="Mon, 17 Sep 2012 13:57:35 SGT" />
</head>

行ごとに読んでいますが、この場合、正規表現を作成するにはどうすればよいですか?私は正規表現にかなり慣れていません。私が試してみました

line.matches("<meta http-equiv=\"last-modified\" content=\"(\w)*\" /> "); 

しかし、それが正しいとは思わないでください。

4

3 に答える 3

1

htmlを解析するために正規表現を使用するべきではありませんが、それを主張する場合は、ここに正規表現オプションがあります

Pattern metaPattern = Pattern.compile("meta .*\"last-modified\" content="(.*)");
Matcher metaMatch = metaPattern.matcher(sampleString);
if metaMatch.matches()
{
    System.out.println(metaMatch.group(1));
}
于 2012-09-27T17:25:09.583 に答える
0

ターゲット情報に単語以外の文字\wが含まれているため、グループのみに使用することはできません。

次のようなものを試してください:

String line = "<meta http-equiv=\"last-modified\" content=\"Mon, 17 Sep 2012 13:57:35 SGT\" />";

Pattern p = Pattern.compile("<meta .*last-modified.*content=\"(.*)\".*");
Matcher m = p.matcher(line);
if (m.matches())
    System.out.println(m.group(1));

出力:

Mon, 17 Sep 2012 13:57:35 SGT
于 2012-09-27T17:20:37.683 に答える
0

そして、これが正規表現のないソリューションです。

もちろん、これを慎重に使用し、事前にいくつかのチェックを行う必要があります。

String data = "<head>" +  
              "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1252\">" +
              "<meta http-equiv=\"last-modified\" content=\"Mon, 17 Sep 2012 13:57:35 SGT\" />" + 
              "</head>";

String key =  "<meta http-equiv=\"last-modified\" content=\"";

int from = data.lastIndexOf(key);
String tag = data.substring(from + key.length());
int to = tag.indexOf("\"");
String date = tag.substring(0, to);
System.out.println(date);
于 2012-09-27T18:27:42.457 に答える