正则表达式提取直到冒号后跟一个数字

时间:2014-05-23 08:25:17

标签: regex

我正在尝试编写正则表达式以从以下字符串中提取字段:

String str = "www.com::part1::part2:1363737603029:1472164||";

我需要提取到第2部分之后的“:”,即直到结肠后跟一个数字。正如你所看到的:字符在之前的地方显示为double,所以如果我写[^:]那么它会在www.com之后停止。我试过[^(:\ d +)],但也没用。请帮帮我。

谢谢,

keerthana

3 个答案:

答案 0 :(得分:1)

/^(.*?):[0-9]/

说明:

^ start from the beginning
(.*?) match anything, non-greedily (and capture)
: match a colon
[0-9] match a digit

我假设perl兼容的正则表达式,用于非贪婪的匹配。

答案 1 :(得分:1)

    String str = "www.com::part1::part2:1363737603029:1472164||";
    Pattern pattern = Pattern.compile("^(.*?\\:)(?=\\d)");
    Matcher matcher = pattern.matcher(str);
    if (matcher.find()) {
        System.out.println(matcher.group());
    }

<强>输出

www.com::part1::part2:

答案 2 :(得分:0)

这是必要的正则表达式?或者你可以使用java类? 像:

StringTokenizer st2 = new StringTokenizer(str, ":");


    while (st2.hasMoreElements()) {
        System.out.println(st2.nextElement());
    }