我只是想检查一行是否以一个常量表达式和一个数字
开头然后它区分了像这样的行
line blablabla
line1 blablabla
line2 blablablaxag
line3 askdjfoqwuerulksdfjl
...
这可能很容易,但我一直尝试不同的可能性,仍然无法正常工作
我的尝试
if str.startswith('line'+'[0-9]')
或
if str.startswith('line'+'/d')
由于
答案 0 :(得分:3)
使用startswith
和isdigit
s = "line3 askdjfoqwuerulksdfjl"
if s.startswith("line") and len(s) > 4 and s[4].isdigit():
print("Found")
请参阅demo
这是可能的,因为您的line
是一个常量表达式。必须进行and len(s) > 4
检查,以确保line
之后至少有一个字符。
答案 1 :(得分:1)
您可以使用UIViews
re.match
答案 2 :(得分:0)
根据您的示例输入判断,应该有一个空格字符,用于将行号前缀与行的其余部分分开。以下正则表达式模式将匹配以" line"开头的字符串,后跟一个或多个数字,后面跟一个空格字符或行尾。
import re
for str in 'line blablabla', 'line1 blablabla', 'line222', 'line12 blablablaxag', 'line12f blablablaxag', 'no line':
if re.match(r'line\d+(\W|$)', str):
print str
<强>输出强>
line1 blablabla line222 line12 blablablaxag
请注意,第一个str被排除,因为它以line开头,但后面没有数字。排除第4个字符串,因为它以行后跟数字开头,但在空格之前有一个非数字。
如果字符串以&#34; line&#34;开头但后面没有数字是有效的(您的样本中的第一个字符串),那么您可以将模式更改为r'line\d*(\W|$)'
答案 3 :(得分:-1)
您可以使用re.findall
获取以您的条件开头的每一行(和内容)
>>> re.findall('line\d.*', s)
['line1 blablabla',
'line2 blablablaxag',
'line3 askdjfoqwuerulksdfjl']
如果您只想要线条和数字
>>> re.findall('line\d', s)
['line1', 'line2', 'line3']