Python 3.x python正则表达式或其他东西
我有一个从网络交换机询问接口错误的代码。我得到的输出有时会变化 我从以下格式的开关中获得的输出:(数字不时变化) 因此,我想从我得到的输出中打印只有一行,结尾的数字大于0,就像起始BAG16的行一样 我的代码是这样的:Python 3.x python正则表达式或其他东西,python-3.x,regex,Python 3.x,Regex,我有一个从网络交换机询问接口错误的代码。我得到的输出有时会变化 我从以下格式的开关中获得的输出:(数字不时变化) 因此,我想从我得到的输出中打印只有一行,结尾的数字大于0,就像起始BAG16的行一样 我的代码是这样的: import re kobi = ''' BAGG11 13917779236 10133016 16491979 64 BAGG15 30841323485
import re
kobi = '''
BAGG11 13917779236 10133016 16491979 64
BAGG15 30841323485 22747672 19201545 0
BAGG16 811970 0 811970 0
'''
err = re.findall (r'[BAGG]',kobi)
print(err)
我认为这可以在没有正则表达式的情况下完成 试试这个:
kobi = '''
BAGG11 13917779236 10133016 16491979 64
BAGG15 30841323485 22747672 19201545 0
BAGG16 811970 0 811970 0
'''
lst = kobi.split()
lines = [lst[i:i+5] for i in range(0, len(lst), 5)]
for line in lines:
if int(line[-1]) > 0:
print(' '.join(line))
输出:
BAGG11 13917779236 10133016 16491979 64
我对你的意见做了一些假设:
- 总是五排
- 最后一行是数值
^BAGG\d+[^\S\r\n].*[^\S\r\n][1-9]\d*$
如果有3列,则使用更精确的匹配可以使用量词<代码> { 3 } /代码>以匹配中间的“列”的数目。
^BAGG\d+(?:[^\S\r\n]+\d+){3}[^\S\r\n]+[1-9]\d*$
解释
行的开头^
匹配BAGG和1+数字BAGG\d+
非捕获组(?:
匹配1+个空格字符,不带换行符,后跟1+个数字[^\S\r\n]+\d+
关闭非捕获组并重复3次){3}
匹配1+不带换行符的空白字符[^\S\r\n]+
匹配数字1-9,后跟可选数字[1-9]\d*
行尾$
import re
kobi = '''
BAGG11 13917779236 10133016 16491979 64
BAGG15 30841323485 22747672 19201545 0
BAGG16 811970 0 811970 0
'''
err = re.findall (r'^BAGG\d+(?:[^\S\r\n]+\d+){3}[^\S\r\n]+[1-9]\d*$', kobi, re.MULTILINE)
print(err)
输出
['BAGG11 13917779236 10133016 16491979 64']
我在JavaScript上测试了这个模式:
/BAGG.+(?:\s+(?:0*[1-9]\d*\d*\.0*[1-9]\d*)$/mg
。Patern find行以BAGG开头,以大于0的数字结尾。