metersk
metersk

Reputation: 12529

How can I match all strings unless it contains a certain string?

So I want to match every string in this list, except the ones that contain the product SKU, which is /s7892632 <---- random string of numbers. I've been trying to do this for quite some time and have been unsuccessful. Any insight would be greatly appreciated.

   /account/login?returnurl=/account/forgotpassword
    /account/login?returnurl=/account/orders
    /account/orders
    /account/updateaddress
    /account/updateemail
    /account/updaterewardscard
    /brands/havaianas
    /careers
    /Category List
    /checkout
    /checkout/addresses
    /checkout/addresses/delivery
    /checkout/addresses/deliverymethod
    /checkout/affilinetbasket
    /checkout/anonymous
    /checkout/confirmation
    /checkout/express
    /checkout/login
    /checkout/login?returnurl=/checkout/addresses
    /checkout/null
    /checkout/payment
    /checkout/paypal
    /checkout/quickshop/
    /checkout/verify
    /click-and-collect
    /click-and-collect/click-and-collect-overview
    /corporate/about-matalan
    /corporate/careers
    /corporate/cookies
    /corporate/history
    /customer-services/accessibility
    /customer-services/contact
    /customer-services/customer-services-home
    /customer-services/delivery
    /customer-services/faq
    /customer-services/fitting-room
    /customer-services/here-to-help
    /customer-services/size-guides
    /delivery
    /events/mothers-day
    /events/mothers-day/s2516241/tassle-detail-slouch-bag
    /events/mothers-day/s2518752/waxed-jacket
    /events/mothers-day/s2519237/fabric-buckle-tote-bag
    /events/mothers-day/s2521182/heart-print-nightie
    /events/mothers-day/s2521184/heart-print-dressing-gown
    /events/mothers-day/s2521185/heart-print-pyjama-set
    /events/mothers-day/s2521679/structured-tote-bag
    /events/mothers-day/s2522143/chiffon-print-dress
    /events/mothers-day/s2522347/butterfly-enamel-bowl-32cm-x-8cm
    /events/mothers-day/s2526013/animal-print-jersey-blazer
    /events/mothers-day/s2527624/croc-tote-bag
    /events/mothers-day/s2529731/shift-dress
    /events/mothers-day?page=1&size=120&cols=4&sort=&id=/events/mothers-day&priceRange[min]=2&priceRange[max]=59
    /events/mothers-day?page=2&size=120&cols=4&sort=&id=/events/mothers-day&priceRange[min]=2&priceRange[max]=59
    /events/mothers-day?page=2&size=36&cols=4&sort=&id=/events/mothers-day&priceRange[min]=2&priceRange[max]=59
    /events/mothers-day?page=3&size=36&cols=4&sort=&id=/events/mothers-day&priceRange[min]=2&priceRange[max]=59

Upvotes: 0

Views: 392

Answers (3)

Keith Nicholas
Keith Nicholas

Reputation: 44308

this matches lines that don't have the code....

^((?!s\d{7}).)*$

Upvotes: 0

Bohemian
Bohemian

Reputation: 425198

Try this:

boolean noSku = !line.matches(".*/s\\d{5,}.*");

This uses {5,} which allows for any number of digits in the SKU greater than 4 (giving you flexibility with matching). You can change the number to whatever suits.

Upvotes: 0

Andrew Clark
Andrew Clark

Reputation: 208545

The following should work:

^(?!.*/s\d{7}/).*

Example: http://regexr.com?343nf

This assumes you have each string as a separate element in a list. If this is actually matching one big string with multiple lines you can use the same regex, but you may need to enable global and multiline options depending on the tool you are using (and make sure dotall/singleline is disabled).

Upvotes: 1

Related Questions