I am trying to find words in regular expression with length 4
I am trying this but I am getting an empty list:
#words that have length of 4 s = input("please enter an expression: ") print(re.findall(r'/^[a-zA-Z]{4}$/',s))
What is wrong with my code ?
my input is: here we are having fun these days
my expected output: ['here', 'days']
my output: []
Advertisement
Answer
Use word boundaries b
. When you add anchors in your regex like ^[a-zA-Z]{4}$
, this would match the lines which have only four alphabets. It won’t check for each individual words. ^
asserts that we are at the start and $
asserts that we are at the end. b
matches between a word character and a non-word character(vice versa). So it matches the start (zero width) of a word or end (zero width) of a word.
>>> s = "here we are having fun these days" >>> re.findall(r'b[a-zA-Z]{4}b', s) ['here', 'days']