使用正则表达式拆分列表

splitting list with regex

我正在 Marathon 中编写测试并试图只获取 JTable 的一列。 它的内容如下所示:

[[NEEDED_ITEM_1, java.awt.Color[r=253,g=255,b=196], [ATTACHMENT], [all levels], false, olololo@56fc12a9], [NEEDED_ITEM_2, java.awt.Color[r=179,g=237,b=181], [ATTACHMENT], [2nd level, 3rd], true, blablabla@cb331d80], [NEEDED_ITEM_3, java.awt.Color[r=255,g=255,b=255], [ATTACHMENT], [1st level, 3rd level], false, wwwww@2aedb772]]

所以我需要的是: ['NEEDED_ITEM_1','NEEDED_ITEM_2','NEEDED_ITEM_3']

我试图通过使用 regex 将 table 内容相应地拆分成一个列表。但是,我在找到正确的表达方式来完成这项工作时遇到了问题。

如果我这样做:

def get_my_table(my_list=[]):

    # Get table entries
    table = re.split('\], \[', get_p('myTable', 'Content')[2:-2])
    for lineIn_table in table:
        # Split up lines
        lineIn_table = re.split('\W+', lineIn_table)
        i = 1
        for columnIn_lineIn_table in lineIn_table:
            if i == 1:
                my_list.append(columnIn_lineIn_table)
            i += 1
    return my_list

作为输出我只得到:

['NEEDED_ITEM_1', 'MAIL_INCOMING', 'all', 'NEEDED_ITEM_2', 'MAIL_INCOMING', '2nd', 'NEEDED_ITEM_3', 'MAIL_INCOMING', '第一']

我想更换

'\W'

在第二次分裂中被

[@].+?\',\W\'\W[

这将按这组字符拆分列表

@cb331d80], [

然而,这也没有给出正确的结果。我还不太擅长正则表达式,所以希望得到任何提示!

update,我按照@Jodevan的建议修改了:

table = re.split('\[([\w]+),\s*(?:java)', get_p('myTable', 'Content')[2:-2])
        for lineIn_table in table:
            # Split up lines
            lineIn_table = re.split('\W+', lineIn_table)
            i = 1
            for columnIn_lineIn_table in lineIn_table:
                if i == 1:
                    my_list.append(columnIn_lineIn_table)
                i += 1
        return my_list

这个正则表达式怎么样? \[([\w]+),\s*(?:java) 这依赖于下一项是 java.awt.color 这一事实。 然后,为了捕获 NEEDED_ITEM_X 你只需要获得第一组。