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 回答