Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 使用正则表达式拆分列表_Regex_Split_Jython - Fatal编程技术网

Regex 使用正则表达式拆分列表

Regex 使用正则表达式拆分列表,regex,split,jython,Regex,Split,Jython,我正在马拉松中编写一个测试,并试图只获取JTable的一列。 它的内容如下所示: 所需物品1,java.awt.Color[r=253,g=255,b=196],[附件],[全部 这是错误的,olololo@56fc12a9],[需要的项目2, java.awt.Color[r=179,g=237,b=181],[附件],[2级,3级], 是的,blablabla@cb331d80],[需要的项目\u 3, java.awt.Color[r=255,g=255,b=255],[ATTACHMEN

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

所需物品1,java.awt.Color[r=253,g=255,b=196],[附件],[全部 这是错误的,olololo@56fc12a9],[需要的项目2, java.awt.Color[r=179,g=237,b=181],[附件],[2级,3级], 是的,blablabla@cb331d80],[需要的项目\u 3, java.awt.Color[r=255,g=255,b=255],[ATTACHMENT],[1级,3级],false, wwwww@2aedb772]]

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

我试图通过使用regex将表内容相应地拆分,从而将其转换为列表。但是,我在找到正确的表达式以完成此操作方面遇到了问题

如果我这样做:

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'、'needu ITEM_2'、'MAIL_INCOMING'、'2nd'、'needu 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

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

这将不起作用,因为第一个拆分是:table=re.split('],[',get_p('myTable','Content')[2:-2])您不再需要拆分任何内容。只需构建完整字符串并使用正则表达式提取所需的信息。我不明白您的意思。在您的问题中,您陈述的内容如下:
[[NEEDED\u ITEM\u 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],[2级,3级],正确,blablabla@cb331d80],[NEEDED_ITEM_3,java.awt.Color[r=255,g=255,b=255],[ATTACHMENT],[1级,3级],false,wwwww@2aedb772]]
。如果您使用我在这个字符串上建议的正则表达式,您将得到您所需要的。哦,您的意思是根本不需要使用split吗?p.s.jython与python没有太大区别:)我只是凭直觉编写代码