用正则表达式拆分列表

时间:2016-02-15 15:30:32

标签: regex split jython

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

  

[[ NEEDED_ITEM_1 ,java.awt.Color [r = 253,g = 255,b = 196],[ATTACHMENT],[全部   等级],假,olololo @ 56fc12a9],[ NEEDED_ITEM_2 ,   java.awt.Color [r = 179,g = 237,b = 181],[ATTACHMENT],[2nd level,3rd],   是的,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']

我尝试将表格内容转换为列表,方法是使用正则表达式进行相应的拆分。但是,我在找到正确的表达方式时遇到了问题。

如果我这样做:

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',& #39;第二',' NEEDED_ITEM_3',' MAIL_INCOMING',' 1st']

我想过要替换

  

' \ W'

在第二次拆分中由

  ?

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

将按这组字符分割列表

  

@ cb331d80],[

但是,这也没有给出正确的结果。我对正则表达式表达式还不太满意,所以会感激任何提示!

更新,我根据@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

1 个答案:

答案 0 :(得分:0)

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