我正在尝试在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);
任何有关的建议都将受到赞赏。什么应该是正则表达式,所以我只提取数据。
答案 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选项:)