如何找到两个子字符串('123STRINGabc' -> 'STRING'
)之间的字符串?
我现在的方法是这样的:
>>> start = 'asdf=5;'
>>> end = '123jasd'
>>> s = 'asdf=5;iwantthis123jasd'
>>> print((s.split(start))[1].split(end)[0])
iwantthis
然而,这似乎是非常低效和非pythonic式的。做这样的事情有什么更好的方法吗?
忘了提一下:字符串可能不会以start
和end
开头和结尾。它们可能在前后有更多的字符。
发布于 2010-07-30 13:59:57
import re
s = 'asdf=5;iwantthis123jasd'
result = re.search('asdf=5;(.*)123jasd', s)
print(result.group(1))
发布于 2010-07-30 13:58:16
s = "123123STRINGabcabc"
def find_between( s, first, last ):
try:
start = s.index( first ) + len( first )
end = s.index( last, start )
return s[start:end]
except ValueError:
return ""
def find_between_r( s, first, last ):
try:
start = s.rindex( first ) + len( first )
end = s.rindex( last, start )
return s[start:end]
except ValueError:
return ""
print find_between( s, "123", "abc" )
print find_between_r( s, "123", "abc" )
提供:
123STRING
STRINGabc
我认为应该注意这一点-根据你需要的行为,你可以混合index
和rindex
调用,或者使用上面的一个版本(相当于正则表达式(.*)
和(.*?)
组)。
发布于 2013-09-13 23:54:32
start = 'asdf=5;'
end = '123jasd'
s = 'asdf=5;iwantthis123jasd'
print s[s.find(start)+len(start):s.rfind(end)]
给出
iwantthis
https://stackoverflow.com/questions/3368969
复制相似问题