Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 字符串和下一个非数字字符之间的字符串_Python_String - Fatal编程技术网

Python 字符串和下一个非数字字符之间的字符串

Python 字符串和下一个非数字字符之间的字符串,python,string,Python,String,我有这样一个字符串: rawString "sampleStringWithNumber/obj3453andBlabla" def find_between( s, first, last ): try: start = s.index( first ) + len( first ) end = s.index( last, start ) return s[start:end] except ValueError:

我有这样一个字符串:

rawString "sampleStringWithNumber/obj3453andBlabla"
 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")))
我希望做到这一点:

newString = "obj3453"
我知道有很多相关的问题,如果
obj3453
后面的下一个字符是静态的,这不会是一个问题,但不幸的是,下一个字符可以是任何字母(单词),也可以有多于/少于4个数字

那么,有没有可能这样做:

rawString "sampleStringWithNumber/obj3453andBlabla"
 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")))

基本上,我想传递一个变量作为第二个参数,它可以是除数字以外的任何参数

使用正则表达式

>>> import re
>>> s = "sampleStringWithNumber/obj3453andBlabla"
>>> re.search(r'/(.*?\d+)', s).group(1)
'obj3453'
正则表达式
/(.*?\d+
搜索斜杠,后跟由任意字符序列(非贪婪)组成的组:
*?
,后跟任意位数:
\d+


re.search
返回匹配对象(或无),第一个
.group
将作为结果。在实际代码中,您可能应该首先测试是否找到任何东西。

太好了,谢谢!也许你能告诉我,如果数字后面没有字符,它会工作吗?我的意思是没有即将到来的字符或者有空白。空白已经像这样工作了,我在编辑中修复了“没有即将到来的字符”的事情。