Python 如何在不使用正则表达式的情况下匹配后跟任何内容的字符?

Python how to match a character followed by anything without using regrex?

我有一堆看起来像 aaa -bxaaa -bxx 的字符串,其中 x 是一个数字。有什么方法可以不使用正则表达式来处理 bxbxx 吗?我记得有一个类似b_的东西可以匹配它。

嗯,它不是 eloquent,但您当然可以手动测试字符串 'bxx',其中 xx 代表一个或两个数字,可以说是手动的。

这是一个例子。首先检查它是否有足够的长度并以'b'开头。然后检查下一部分是否为整数。

def matchfunction(s):

    if len(s) < 2 or s[0] != 'b':
       return False

    try:
        int(s[1:])
        return True
    except:
        return False


print( matchfunction( 'b23' ) )

print( matchfunction( 'bavb' ) )

正如预期的那样,输出是

True

False

您可以使用字符串方法。

匹配文字 aaa -b 后跟数字:

def match(s):
    start = 'aaa -b'
    return s.startswith(start) and s[len(start):].isdigit()

match('aaa -b33')
# True

如果您想检查最后一个 b 之后的部分是否为数字,请使用 s.rsplit('b')[-1].isdigit()