我有一个这样的字符串:
rawString "sampleStringWithNumber/obj3453andBlabla"
我想实现这个目标:
newString = "obj3453"
我知道有很多相关的问题,如果obj3453
之后的下一个字符是静态的,那就不会有问题,但不幸的是,下一个字符可以是任何字母(字)并且还可以有多于/少于4个数字。
所以可以这样做:
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 ""
print ((find_between(rawString, "/","the_next_string_thats_not_a_number")))
基本上我想传递一个变量作为第二个参数,除了数字之外可以是任何东西。
答案 0 :(得分:5)
使用正则表达式!
>>> import re
>>> s = "sampleStringWithNumber/obj3453andBlabla"
>>> re.search(r'/(.*?\d+)', s).group(1)
'obj3453'
正则表达式/(.*?\d+)
搜索斜杠,后跟一个由任意字符序列(非贪婪)组成的组:.*?
,后跟任意数量的数字:{{1} }。
\d+
返回匹配对象(或无),第一个re.search
将是结果。在实际代码中,您应该首先测试是否发现了任何内容。