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']