Есть много подходов. Этот подход работает при условии, что это раздел после продукта.
Pattern pat = Pattern.compile("^.*(https://.*/product/[^\\/]*?/).*");
Пример:
public static void main(String[] args)
{
String inp = "Some Nice Article on amazon "
+ "https://www.amazon.de/gp/product/ADKLHJADK/ref=as_li_ss_tl"
+ "?ie=UTF8&pd_rd_i=B01J7LLL9Q&pd_rd_r"
+ "=a8c7bb4b-49da-11e8-ad28-014ae5dc2f42&pd_rd_w"
+ "=9QOk2&pd_rd_wg=zc1s7&pf_rd_m=A3JWKAKR8XB7XF&pf_rd_s=&pf_rd_r"
+ "=VF3C7MDNZ741H8S13AYV&pf_rd_t="
+ "36701&pf_rd_p=1c175abe-9bc7-490b-bbe1-2caf7e752c98&pf_rd_i"
+ "=desktop&linkCode=ll1";
Pattern pat = Pattern.compile("^.*(https://.*/product/[^\\/]*?/).*");
Matcher m = pat.matcher(inp);
if (m.matches() && m.groupCount() > 0) {
System.out.println(m.group(1));
}
}
Идея состоит в том, чтобы найти начало "https:", затем что-нибудь, затем "product /", затем что-нибудь до следующего "/".
Результирующий вывод:
https://www.amazon.de/gp/product/ADKLHJADK/