6

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

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

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

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);

任何有关的建议将不胜感激。什么应该是正则表达式,所以我只提取数据。

4

2 回答 2

3

这是满足您需求的示例。请注意,完整匹配将包含带有锚标记的字符串,并且您搜索的内容位于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));
}
于 2013-03-05T14:46:01.940 回答
1

请改用 HTML/XML 解析器。你的生活会轻松很多。

HTML 通常是非常不一致的,你不能确定它会变成你想要的样子。

实际上有一个著名的答案,在RegEx match open tags except XHTML self-contained tags

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

于 2013-03-05T14:46:31.807 回答