Java正则表达式在href标记之间提取数据

时间:2013-03-05 14:30:16

标签: java regex

我正在尝试在Java字符串中的href标记之间提取数据。我可以 使用indexOf等替换all和substring来实现这一点。

我想知道如何使用正则表达式获取数据。

所以基本上我试图提取数据并存储在字符串或列表中。

String data ="12345";
        String sampleStr ="";
        for(int i=0; i<10; i++) {
         data+=i;
        sampleStr += "<a href=\"javascript:yyy_getDetail(\'"+data+"\')\">"+data+"</a>"+", ";
        }           

        System.out.println(sampleStr);
        String temp = sampleStr.substring(sampleStr.indexOf("\">")+2);

任何有关的建议都将受到赞赏。什么应该是正则表达式,所以我只提取数据。

2 个答案:

答案 0 :(得分:2)

以下是您需求的示例。请注意,完整匹配将包含带有锚标记的字符串,并且您搜索的内容位于group 1

String data ="12345";
String sampleStr ="";
for(int i=0; i<10; i++) 
{
 data+=i;
 sampleStr += "<a href=\"javascript:yyy_getDetail(\'"+data+"\')\">"+data+"</a>"+", ";
} 

Pattern pattern = Pattern.compile("<a[^>]*>(.*?)</a>");
Matcher matcher = pattern.matcher(sampleStr );
while (matcher.find()) 
{
        System.out.println("Result "+ matcher.group(1));
}

答案 1 :(得分:1)

请使用HTML / XML解析器。你的生活会更容易。

HTML通常非常不一致,你不能确定它会以你想要的方式结束。

RegEx match open tags except XHTML self-contained tags

,实际上有一个着名的答案

如果您选择使用HTML / XML解析器,您应该查看Best XML parser for Java选项:)