python - 字符串与下一个非数字字符之间的字符串

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

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

最佳答案

使用正则表达式!

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

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

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

关于python - 字符串与下一个非数字字符之间的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36045059/

相关文章:

java - 检查字符串是否只包含某些字符

java - 如何获取 StringBuilder 中的字符数组以避免数组复制

java - 多个字符实例的正则表达式

java - 检查字符串中的大写字母并找到位置

python - Tensorflow:变量范围的值错误

python - 将分类移至生产环境

python - [u "'' 值的格式无效。它必须采用 YYYY-MM-DD HH :MM[:ss[. uuuuuu]][TZ] 格式。"]

python - 按组对 Pandas 数据框进行排序并保持所需的顺序

python - Tensorflow特征值分解极慢

ios - 为什么我的数据没有通过 View Controller 传递?