Questo può essere un approccio semplicistico, ma devo ancora trovare un errore in esso utilizzando uno dei dell'URL del previsto in questa discussione che la gente dice è un problema.
Semplicemente, prendo l'URL, lo divido sulla "/" per ottenere le parti discrete. Quindi fai un loop del contenuto dell'array e rimbalzalo fuori dalla regex. Nel mio caso la variabile i rappresenta un oggetto che ha una proprietà chiamata RawURL per contenere l'url non elaborato con cui sto lavorando e una proprietà chiamata VendorSKU che sto compilando.
try
{
string[] urlParts = i.RawURL.Split('/');
Regex regex = new Regex(@"^[A-Z0-9]{10}");
foreach (string part in urlParts)
{
Match m = regex.Match(part);
if (m.Success)
{
i.VendorSKU = m.Value;
}
}
}
catch (Exception) { }
Finora, questo ha funzionato perfettamente.
fonte
2018-03-05 19:33:22
Un altro modulo possibile: amazon.com/exec/obidos/asin/B0015T963C. Per essere completamente completo, la regex potrebbe essere estesa con 'dp | gp/product | exec/obidos/asin'. – jpsimons
Basandosi su questo, e l'aggiunta del supporto per i caratteri internazionali, porti dispari, https, domini non statunitensi, ei parametri di query/monitoraggio (e sto usando Java) sarebbe: modello asinPattern = modello \t \t \t .compile ???? ("^ (http [s]: //) ([\\ W.-] +) ([0-9] +)/([\\ w-%] + /) (dp | ?.? gp/prodotto | exec/Obidos/ASIN)/(\\ w + /) (\\ w {10}) (*) $ "); –
Anche dopo l'aggiornamento di @ JasonThrasher, non funzionava ancora per l'URL: https://www.amazon.com/gp/aw/d/B00W36QH4C?me= & ref = olp_product_details # immersive-view_1438138820146 La soluzione di Gumbo sembrava sta lavorando per tutti i miei url –