python

时间:2015-08-17 12:02:17

标签: python regex

我只是想检查一行是否以一个常量表达式和一个数字

开头

然后它区分了像这样的行

line blablabla
line1 blablabla
line2 blablablaxag
line3 askdjfoqwuerulksdfjl
...

这可能很容易,但我一直尝试不同的可能性,仍然无法正常工作

我的尝试

if str.startswith('line'+'[0-9]') 

if str.startswith('line'+'/d')

由于

4 个答案:

答案 0 :(得分:3)

使用startswithisdigit

,无法使用正则表达式即可实现此目的
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']