when I use negative lookahead on this string
1pt 22px 3em 4px
like this
/\d+(?!px)/g
i get this result
(1, 2, 3)
and I want all of the 22px to be discarded but I don't know how should I do that
Add a digit pattern to the lookahead:
\d+(?!\d|px)
See the regex demo
This way, you will not allow a digit to match after 1 or more digits are already matched.
Another way is to use an atomic group work around like
(?=(\d+))\1(?!px)
See the regex demo. Here, (?=(\d+)) captures one or more digits into Group 1 and the \1 backreference will consume these digits, thus preventing backtracking into the \d+ pattern. The (?!px) will fail the match if the digits are followed with px and won't be able to backtrack to fetch 2.
Both solutions will work with re.findall.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With