python 字符串中的find只能返回第一次出现的位置,可以利用find找出多有子串出现的位置:
def find_all(sub,s):
index_list = []
index = s.find(sub)
while index != -1:
index_list.append(index)
index = s.find(sub,index+1)
if len(index_list) > 0:
return index_list
else:
return -1
使用re包来实现,直接通过循环来实现,然后返回找到的pattern的起始位置和终止位置。
import re
string = 'You said I was your life. Are you still alive when you lost it?'
pattern = 'you'
for m in re.finditer(pattern, string):
print(m.start(), m.end())
1、str.find()函数:检测 str 是否包含在 string 中,如果 beg 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1。
str.find(substring, beg=0, end=len(string))
2、str.index()函数:跟find()方法一样,只不过如果str不在 string中会报一个异常。
str.index(substring, beg=0, end=len(string))