How to match a string with pythons regex with optional character, but only if that optional character is preceded by another character
Question:
I need to match a string that optionally ends with numbers, but only if the numbers aren’t preceded by a 0.
so AAAA should match, AAA1 should, AA20 should, but AA02 should not.
I can figure out the optionality of it, but I’m not sure if python has a "preceded by" or "followed by" flag.
if s.isalnum() and re.match("^[A-Z]+[1-9][0-9]*$", s):
return True
Answers:
Try:
^[A-Z]+(?:[1-9][0-9]*)?$
^[A-Z]+
– match letters from the beginning of string
(?:[1-9][0-9]*)?
– optionally match a number that doesn’t start from 0
$
– end of string
I need to match a string that optionally ends with numbers, but only if the numbers aren’t preceded by a 0.
so AAAA should match, AAA1 should, AA20 should, but AA02 should not.
I can figure out the optionality of it, but I’m not sure if python has a "preceded by" or "followed by" flag.
if s.isalnum() and re.match("^[A-Z]+[1-9][0-9]*$", s):
return True
Try:
^[A-Z]+(?:[1-9][0-9]*)?$
^[A-Z]+
– match letters from the beginning of string
(?:[1-9][0-9]*)?
– optionally match a number that doesn’t start from 0
$
– end of string