首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >查找两个子字符串之间的字符串

查找两个子字符串之间的字符串
EN

Stack Overflow用户
提问于 2010-07-30 13:50:29
回答 19查看 571.9K关注 0票数 314

如何找到两个子字符串('123STRINGabc' -> 'STRING')之间的字符串?

我现在的方法是这样的:

代码语言:javascript
复制
>>> start = 'asdf=5;'
>>> end = '123jasd'
>>> s = 'asdf=5;iwantthis123jasd'
>>> print((s.split(start))[1].split(end)[0])
iwantthis

然而,这似乎是非常低效和非pythonic式的。做这样的事情有什么更好的方法吗?

忘了提一下:字符串可能不会以startend开头和结尾。它们可能在前后有更多的字符。

EN

回答 19

Stack Overflow用户

回答已采纳

发布于 2010-07-30 13:59:57

代码语言:javascript
复制
import re

s = 'asdf=5;iwantthis123jasd'
result = re.search('asdf=5;(.*)123jasd', s)
print(result.group(1))
票数 418
EN

Stack Overflow用户

发布于 2010-07-30 13:58:16

代码语言:javascript
复制
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" )

提供:

代码语言:javascript
复制
123STRING
STRINGabc

我认为应该注意这一点-根据你需要的行为,你可以混合indexrindex调用,或者使用上面的一个版本(相当于正则表达式(.*)(.*?)组)。

票数 166
EN

Stack Overflow用户

发布于 2013-09-13 23:54:32

代码语言:javascript
复制
start = 'asdf=5;'
end = '123jasd'
s = 'asdf=5;iwantthis123jasd'
print s[s.find(start)+len(start):s.rfind(end)]

给出

代码语言:javascript
复制
iwantthis
票数 110
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3368969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档