字符串和下一个不是数字的char之间的字符串

时间:2016-03-16 19:19:19

标签: python string

我有一个这样的字符串:

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")))

基本上我想传递一个变量作为第二个参数,除了数字之外可以是任何东西。

1 个答案:

答案 0 :(得分:5)

使用正则表达式!

>>> import re
>>> s = "sampleStringWithNumber/obj3453andBlabla"
>>> re.search(r'/(.*?\d+)', s).group(1)
'obj3453'

正则表达式/(.*?\d+)搜索斜杠,后跟一个由任意字符序列(非贪婪)组成的组:.*?,后跟任意数量的数字:{{1} }。

\d+返回匹配对象(或无),第一个re.search将是结果。在实际代码中,您应该首先测试是否发现了任何内容。