i am having a python string of format
mystr = "hi.this(is?my*string+"
here i need to get the position of ‘is’ that is surrounded by special characters or non-alphabetic characters (i.e. second ‘is’ in this example). however, using
mystr.find('is')
will return the position if ‘is’ that is associated with ‘this’ which is not desired. how can i find the position of a substring that is surrounded by non-alphabetic characters in a string? using python 2.7
Here the best option is to use a regular expression. Python has the
remodule for working with regular expressions.We use a simple search to find the position of the
"is":This returns the first match as a match object. We then simply use
MatchObject.start()to get the starting position:Edit: A good point made, we make
"is"a group and match that group to ensure we get the correct position.As pointed out in the comments, this makes a few presumptions. One is that surrounded means that
"is"cannot be at the beginning or end of the string, if that is the case, a different regular expression is needed, as this only matches surrounded strings.Another is that this counts numbers as the special characters – you stated non-alphabetic, which I take to mean numbers included. If you don’t want numbers to count, then using
r"\b(is)\b"is the correct solution.