分割这种模式的最有效方法

时间:2015-06-24 14:39:17

标签: java regex split stringtokenizer

我有一个包含数千行的文件:

node: { title: "0" label: "sub_401000" color: 76 textcolor: 73 bordercolor: black }

我需要的是提取标题值和标签值。例如在上面的行中。我需要提取0和sub_401000。我可以分开它们,但需要花费很多时间。 我想知道这个过程最有效的方法是什么?

2 个答案:

答案 0 :(得分:1)

这样的事情应该做(注意我假设标题:和引号之间有一个空格。

public class Test {

    public static void main(String[] args) 
    {
        String str = "node: { title: \"0\" label: \"sub_401000\" color: 76 textcolor: 73 bordercolor: black }";
        //String regex = ".*title: \"(.*)\".*label: \"(.*)\""; better regex below suggested by pschemo
        String regex = "title: \"([^\"]*)\".*label: \"([^\"]*)\"";
        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(str);
        if(m.find())
        {
            String title = m.group(1);
            String label = m.group(2);
            System.out.println(title);
            System.out.println(label);
        }
    }
}

输出:

0

sub_401000

答案 1 :(得分:0)

您可以尝试使用此正则表达式并尽可能编译它,因为它将被重复使用。 (注意:它用于使用括号捕获匹配)

 (\w+): "*(\w*)

Regular expression visualization

Debuggex Demo