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 形式はどうあるべきですか。「Weight:」と「(」の間をカットしようとしています。

どんな助けでも素晴らしいでしょう!しばらく探していましたが、フォーマットを説明する適切な場所が見つかりませんでした。

4

3 に答える 3

2

グループも必要ありません。この場合、作品の裏側を見てください。

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

別の方法として:

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

last をエスケープしていないように見える(ので、それが問題になるでしょう(Javaを使用していないと思います-正規表現でグループを表現するために括弧が使用されていることを考慮して)。も追加しまし\sた。つまり、結果をトリミングする必要はありません。

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