Python 如何在不使用正则表达式的情况下匹配后跟任何内容的字符?
Python how to match a character followed by anything without using regrex?
我有一堆看起来像 aaa -bx
或 aaa -bxx
的字符串,其中 x
是一个数字。有什么方法可以不使用正则表达式来处理 bx
或 bxx
吗?我记得有一个类似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()
我有一堆看起来像 aaa -bx
或 aaa -bxx
的字符串,其中 x
是一个数字。有什么方法可以不使用正则表达式来处理 bx
或 bxx
吗?我记得有一个类似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()