I need the regex expression to find a substring (it's a variable) that is either preceded/followed by punctuation, whitespaces or the start/end of the string. I don't know the size or content of the substring. I've come up with [\?\.!\- ]1abc[\?\.!\- ]
(this is a specific example where the substring is 1abc) but I don't know how to add start/end as a possibility. With the following list:
I'd want the matches to be on all lines but not "2131abc2411abc". Alternatively I tried the pattern [\?\.!\- ]*1abc[\?\.!\- ]*
but with this, "2131abc2411abc" returns matches also.
Could someone help me out?
Directly use (^|[\?\.!\- ])
to match one of the boundary characters or the start of the string. For the end, use $
.
In addition, directly use 1abc
to match that substring literally rather than putting it into a character class which matches only one character from the set.
re.search(r'(^|[\?\.!\- ])1abc([\?\.!\- ]|$)', s)