extractPrices static method

List<String> extractPrices(
  1. String html
)

Extract prices (for e-commerce sites)

Implementation

static List<String> extractPrices(String html) {
  final prices = <String>[];
  final patterns = [
    r'\$\s*(\d+(?:,\d{3})*(?:\.\d{2})?)', // $123.45, $1,234.56
    r'(\d+(?:,\d{3})*(?:\.\d{2})?)\s*USD', // 123.45 USD
    r'Price:\s*\$?(\d+(?:,\d{3})*(?:\.\d{2})?)', // Price: $123.45
    r'<[^>]*class=[\"\x27][^\"\x27]*price[^\"\x27]*[\"\x27][^>]*>[^\\$]*\\\$([^<]*)<', // Class-based price
  ];

  for (final pattern in patterns) {
    final matches = RegExp(pattern, caseSensitive: false).allMatches(html);
    for (final match in matches) {
      final price = match.group(1);
      if (price != null && price.isNotEmpty) {
        prices.add('\$${price.trim()}');
      }
    }
  }

  return prices.toSet().toList();
}