使用java regex提取值

时间:2011-08-04 14:58:31

标签: java regex

我从正则表达式开始,我想要像这样的

字符串中提取值
String test="[ABC]Name:User:Date: Adresse ";

我想要提取名称,用户,日期和地址 我可以使用substring和split

来完成这个技巧
String test = "String test="[ABC]Name:User:Date: Adresse ";
        String test2= test.substring(5,test.length());
        System.out.println(test2);
        String[] chaine = test2.split(":");
        for(String s :chaine)
        {
            System.out.println("Valeur " + s);
        }

但我想尝试使用正则表达式,我做了

pattern = Pattern.compile("^[(ABC)|:].");

但它不起作用

你能帮我吗?

非常感谢

2 个答案:

答案 0 :(得分:1)

String#split确实是完成您要做的事情的最佳方式。话虽如此,使用正则表达式,以下内容将为您提供相同的输出:

    Pattern p = Pattern.compile("^(?:\\[ABC\\])([^:]+):([^:]+):([^:]+):([^:]+)$");
    Matcher m = p.matcher(test);
    while (m.find()) {
        System.out.println("Valeur " + m.group(1)); // Name
        System.out.println("Valeur " + m.group(2)); // User
        System.out.println("Valeur " + m.group(3)); // Date
        System.out.println("Valeur " + m.group(4)); // Address
    }

答案 1 :(得分:0)

你必须逃避[] here是一个有效的例子。

^\[(.*)\](.*):(.*):(.*):(.*)$

请注意,在正则表达式变得复杂的情况下,您的代码可能比正则表达式更容易维护。

  

有些人在遇到问题时会想“我知道,我会用   正则表达式。“现在他们有两个问题。 - Jamie Zawinski