2015-01-07 87 views
0

我需要从一个XML文件中的下列信息的Java正则表达式正则表达式:括号内

\"abridged_cast\": \\[([^]]+)\\] 

我需要正则表达式扩展到底部],但我似乎无法得到它的工作。我尝试了大量的变化,没有运气。

+2

恕我直言,使用JSON库将是一个更直接的方法 – reto

+5

Aaack。请不要使用正则表达式来解析JSON。使用JSON解析器。 – ajb

+3

这是有效的JSON,你可以用Jackson或GSON解析它。 – pbespechnyi

回答

1

这是一个有点火车事故,但:

"abridged_cast": \[(\s*\{\s*"name": "[a-zA-Z .]+",\s*"characters": \[("[a-zA-Z .]+",)*"[a-zA-Z .]+"\]\s*\}(,(?=\s*\{)|\s))*\s*\],? 

demo

由于“字符”字段是一个数组,因此我允许使用多个术语,这是我在演示中包含的一个示例。

请注意,我刚刚显示了原始正则表达式;要在java中使用它,你必须避开引号和反斜杠(我没有胃)。

+0

完美工作。我试图做到这一点,但没有做出像这样的巨大的一个,但最后它们都是一样的。 – Nox

0

如果您有完整有效的JSON,可以使用Jackson或GSON解析它。

这是数据类:

public static class Role { 
    private String name; 
    private List<String> characters; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public List<String> getCharacters() { 
     return characters; 
    } 

    public void setCharacters(List<String> characters) { 
     this.characters = characters; 
    } 
} 

public static class Cast { 
    @JsonProperty("abridged_cast") 
    private List<Role> roles; 

    public List<Role> getRoles() { 
     return roles; 
    } 

    public void setRoles(List<Role> roles) { 
     this.roles = roles; 
    } 
} 

这是你如何分析它:

ObjectMapper om = new ObjectMapper(); 
Cast cast = om.readValue(s, Cast.class); 

其中s是你的JSON。

+0

这会工作,但我的系统是围绕使用正则表达式构建的,并且已经完全构建并准备就绪。我所需要的只是这一部分的工作正则表达式。 – Nox