1str = 'codegrepper'
2# str[start:end:step]
3#by default: start = 0, end = len(str), step = 1
4print(str[:]) #codegrepper
5print(str[::]) #codegrepper
6print(str[5:]) #repper
7print(str[:8]) #codegrep
8print(str[::2]) #cdgepr
9print(str[2:8]) #degrep
10print(str[2:8:2]) #dge
11#step < 0 : reverse
12print(str[::-1]) #reppergedoc
13print(str[::-3]) #rpgo
14# str[start:end:-1] means start from the end, go backward and stop at start
15print(str[8:3:-1]) #pperg
1my_var = 'mummy'. #Find the position of 'm'
2
3#Using find - find returns the index for the first instance from the left.
4my_var.find('m')
5# Output: 0
6
7#Using rfind - rfind returns the index for the first instance from the right.
8my_var.rfind('m')
9# Output: 3
10# With find() and rfind(), when substring is not found, it returns -1.
11
12#NB: You can use index() and rindex(). In this case, when the substring is not
13# found, it raises an exception.
1sentence = 'Python programming is fun.'
2
3result = sentence.index('is fun')
4print("Substring 'is fun':", result)
5
6result = sentence.index('Java')
7print("Substring 'Java':", result)
1import re
2# matches_position_start will be a list of starting index positions
3matches_start = re.finditer(word.lower(), string.lower())
4matches_position_start = [match.start() for match in matches_start]
5
6# matches_position_end will be a list of ending index positions
7matches_end = re.finditer(word.lower(), string.lower())
8matches_position_end = [match.end() for match in matches_end]