What is an elegant way to look for a string within another string in Python, but only if the substring is within whole words, not part of a word?
Perhaps an example will demonstrate what I mean:
string1 = "ADDLESHAW GODDARD"
string2 = "ADDLESHAW GODDARD LLP"
assert string_found(string1, string2) # this is True
string1 = "ADVANCE"
string2 = "ADVANCED BUSINESS EQUIPMENT LTD"
assert not string_found(string1, string2) # this should be False
How can I best write a function called string_found that will do what I need? I thought perhaps I could fudge it with something like this:
def string_found(string1, string2):
if string2.find(string1 + " "):
return True
return False
But that doesn't feel very elegant, and also wouldn't match string1 if it was at the end of string2. Maybe I need a regex? (argh regex fear)
One approach using the
re
, or regex, module that should accomplish this task is:You can use regular expressions and the word boundary special character
\b
(highlight by me):Demo
If word boundaries are only whitespaces for you, you could also get away with pre- and appending whitespaces to your strings:
Here's a way to do it without a regex (as requested) assuming that you want any whitespace to serve as a word separator.
And here's some demo code (codepad is a great idea: Thanks to Felix Kling for reminding me)