2

我试图在正则表达式的帮助下将文本从字符串中提取出来,但我之前没有使用太多,而且我无法弄清楚 Pattern.compile 的格式。

我想从以下字符串中减去重量(9 盎司):

<li><b>Shipping Weight:</b> 9 ounces (<a href="http://www.amazon.com/gp/help/seller/shipping.html?ie=UTF8&amp;asin=0982817509&amp;seller=ATVPDKIKX0DER">View shipping rates and policies</a>)</li>

print("Actual Weight:" + link.outerHtml());
Pattern p = Pattern.compile("Weight:\\</\\b\\>(.*?)\\ (");
Matcher m = p.matcher(link.outerHtml());
m.find();
System.out.println(m.group(1));

我的 Pattern.compile 格式应该是什么。我试图在“重量:”和“(”之间切换。

任何帮助都会很棒!我一直在寻找一段时间,但我找不到解释格式的好地方。

4

3 回答 3

2

你甚至不需要组。在这种情况下看后面的作品:

Pattern p = Pattern.compile("(?<=Weight:</b> )[^(]*");
于 2013-01-24T10:00:43.820 回答
0

你似乎没有逃避最后一个(,所以这将是一个问题(我认为,我不使用 Java - 考虑到正则表达式中使用括号来表示组)。我还添加了\s's,这意味着您不必修剪结果。

Pattern.compile("Weight:</b>\s+(.*?)\s+\(");
于 2013-01-24T09:56:47.513 回答
0

作为备选:

Pattern.compile("\d*\sounces");
于 2013-01-24T10:03:41.950 回答