正则和负整数的python中的正则表达式

时间:2016-10-10 15:12:02

标签: python regex

我是python中学习正则表达式的新手,我想知道如何在python中使用正则表达式将我想要的整数(正数和负数)存储到列表中!

例如

这是列表中的数据。

data =
    [u'\x1b[0m[\x1b[1m\x1b[0m\xbb\x1b[0m\x1b[36m]\x1b[0m (A=-5,B=5)', 

    u'\x1b[0m[\x1b[1m\x1b[0m\xbb\x1b[0m\x1b[36m]\x1b[0m (A=5,Y=5)', 

    u'\x1b[0m[\x1b[1m\x1b[10m\xbb\x1b[0m\x1b[36m]\x1b[0m : ']

如何提取A和B的整数值(负数和正数)并将它们存储在变量中以便我可以使用数字?

我试过这样的smth,但列表是空的..

for line in data[0]: 
        pattern = re.compile("([A-Z]=(-?\d+?),[A-Z]=(-?\d+?))") 
        store = pattern.findall(line)

print store

谢谢你,感谢你

2 个答案:

答案 0 :(得分:0)

对于正整数,使用逗号或不使用逗号:namespace Program { public partial class __Dialog : Form { public Main p; public __Dialog() { InitializeComponent(); } private void Button_Click(object sender, EventArgs e) { p.Test(); } } }

带有或不带负号的

-?(?:\d+,?)+
-?打开一个组 (?:一个或多个数字
\d+可选逗号
,?关闭群组 )这个群体可能有一个或一个时期

答案 1 :(得分:0)

根据您要完成的任务,这可能有效:

import re

data = [
    u'\x1b[0m[\x1b[1m\x1b[0m\xbb\x1b[0m\x1b[36m]\x1b[0m (A=-5,B=5)',
    u'\x1b[0m[\x1b[1m\x1b[0m\xbb\x1b[0m\x1b[36m]\x1b[0m (A=5,Y=5)',
    u'\x1b[0m[\x1b[1m\x1b[10m\xbb\x1b[0m\x1b[36m]\x1b[0m : '
]

for line in data:
    m = re.search('\((\w)=(-?\d+),(\w)=(-?\d+)\)', line)
    if not m:
            continue
    myvars = {}
    myvars[m.group(1)] = int(m.group(2))
    myvars[m.group(3)] = int(m.group(4))
    print myvars

这导致包含当前行中变量的字典(myvars)。如果使用此方法,则必须在尝试从字典中获取所需的变量之前检查所需的变量。以上的输出是:

{u'A': -5, u'B': 5}
{u'A': 5, u'Y': 5}