python中的常量字符串加正则表达式
我只想检查一行是否以一个常量表达式加上一个数字开头 然后,它可以区分像这些线python中的常量字符串加正则表达式,python,regex,Python,Regex,我只想检查一行是否以一个常量表达式加上一个数字开头 然后,它可以区分像这些线 line blablabla line1 blablabla line2 blablablaxag line3 askdjfoqwuerulksdfjl ... 这可能很容易,但我一直在尝试不同的可能性,但仍然不起作用 我的尝试 if str.startswith('line'+'[0-9]') 或 谢谢您可以使用re.match re.match('line' + r'\d', st) 您可以使用re.fin
line blablabla
line1 blablabla
line2 blablablaxag
line3 askdjfoqwuerulksdfjl
...
这可能很容易,但我一直在尝试不同的可能性,但仍然不起作用
我的尝试
if str.startswith('line'+'[0-9]')
或
谢谢您可以使用
re.match
re.match('line' + r'\d', st)
您可以使用
re.findall
获取以您的条件开头的每一行(以及内容)
>>> re.findall('line\d.*', s)
['line1 blablabla',
'line2 blablablaxag',
'line3 askdjfoqwuerulksdfjl']
如果你只需要线条和数字
>>> re.findall('line\d', s)
['line1', 'line2', 'line3']
您可以使用
startswith
和以下命令在不使用正则表达式的情况下实现这一点:
看
这是可能的,因为
行
是一个常量表达式。有必要进行和len(s)>4
检查,以确保行之后至少有一个字符
根据示例输入判断,行号前缀与行的其余部分之间应该有一个空格字符。下面的正则表达式模式将匹配以“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
第1行布拉布拉布拉
第222行
第12行Blaxag
请注意,第一个str被排除在外,因为它以行开头,但后面没有数字。第四个字符串被排除在外,因为它以一行开头,后跟一个数字,但在空白之前有一个非数字
如果以“line”开头但不后跟数字的字符串有效(示例中的第一个字符串),则可以将模式更改为r'line\d*(\W |$)'
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