python中的常量字符串加正则表达式

2024-04-19 19:37:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我只想检查一行是否以一个常量表达式加上一个数字开头

然后它对像这样的线有区别

line blablabla
line1 blablabla
line2 blablablaxag
line3 askdjfoqwuerulksdfjl
...

这可能很容易,但我一直在尝试不同的可能性,仍然没有成功

我的尝试

^{pr2}$

或者

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

谢谢


Tags: if表达式line数字可能性常量区别str
3条回答

您可以使用startswith^{}在不使用regex的情况下实现这一点:

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个字符。在

根据您的示例输入判断,应该有一个空格字符将行号前缀与行的其余部分分开。下面的regex模式将匹配以“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

输出

^{pr2}$

请注意,第一个str被排除在外,因为它以line开头,但后面没有数字。第4个字符串被排除在外,因为它以行开头,后跟一个数字,但空格前面有一个非数字。在

如果以“line”开头但后面没有数字的字符串是有效的(示例中的第一个字符串),那么可以将模式更改为r'line\d*(\W|$)'

您可以使用re.match

re.match('line' + r'\d', st)

相关问题 更多 >