You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
re.sub() doesn't substitute for all words with the replacement in the string when re.IGNORECASE is used and counter not specified #99918
re.sub() doesn't substitute for all words with the replacement in the string when re.IGNORECASE is used.
# Your environment
This bug was experienced on IDLE and VS code
#Problem
Whenever re.sub() is used with the flag re.IGNORECASE or re.I and, the counter is not specified all of the occurrences of the word were not replaced instead only the first 2 occurrences were replaced.
For example if the replacement is a string "cat" which should replace the word dog, The code : import re
print(re.sub("dog","cat","dog and cat and dog and dog and dog",re.I)) or import re
print(re.sub("dog","cat","dog and cat and dog and dog and dog",re.IGNORECASE))
the expected output was : cat and cat and cat and cat and cat
the actual output is: cat and cat and cat and dog and dog
below is the image of the editor depicting the problem
Activity
abhii2003 commentedon Dec 1, 2022
Can someone please help and guide me to contribute to solving the issue?
hauntsaninja commentedon Dec 1, 2022
Duplicate of #85830
I recommend using keyword args:
print(re.sub("dog","cat","dog and cat and dog and dog and dog", flags=re.I))I'm leaving open in case anyone is interested in deprecating passing
countby position — this is a little bit of a footgunhauntsaninja commentedon Dec 1, 2022
Okay, looks like this is a super common point of confusion, so we should do something. Time to go through the following issues and figure out what Serhiy's opinion on this: #89621, #86639, #85930, #85830, #79724, #75110, #73091, #72038, #70542, #66949, #61863, #59972, #56287, #56166, #56156, #55471
hauntsaninja commentedon Dec 1, 2022
Okay, closing and will discuss on #56166
abhii2003 commentedon Dec 1, 2022
okay that is good
Fix incorrect use of re function in tests
Fix incorrect passing of flags to re.sub
core: scm: Specify the keyword 'count' in our re.sub call
core: scm: Specify the keyword 'count' in our re.sub call