Regex 正则表达式提取冒号,后跟数字

Regex 正则表达式提取冒号,后跟数字,regex,Regex,我正在尝试编写正则表达式以从以下字符串中提取字段: String str = "www.com::part1::part2:1363737603029:1472164||"; 我需要提取到第2部分后面的“:”,即直到冒号后面跟一个数字。正如您所看到的:字符在前面的位置以双精度显示,因此如果我写入[^:],则它会在www.com之后停止。我尝试了[^(:\d+),但也没有成功。请帮帮我 谢谢 基尔塔纳这是必要的正则表达式??或者您可以使用java类? 比如: /^(.*?[0-9]/ 说明: ^

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

String str = "www.com::part1::part2:1363737603029:1472164||";
我需要提取到第2部分后面的“:”,即直到冒号后面跟一个数字。正如您所看到的:字符在前面的位置以双精度显示,因此如果我写入[^:],则它会在www.com之后停止。我尝试了[^(:\d+),但也没有成功。请帮帮我

谢谢


基尔塔纳

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

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

说明:

^ start from the beginning
(.*?) match anything, non-greedily (and capture)
: match a colon
[0-9] match a digit
我假设perl兼容正则表达式,用于非贪婪匹配

    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:

嗨,克里斯,谢谢你的回复。我使用的是python风格的正则表达式,我希望能够将www.com::part1::part2提取为一个单独的字段。如果您使用类似于
m=re.search(“^(.*):[0-9]”,'www.com::part1::part2:13637603029:1472164 | |')
的东西,那么
m.group(0)
应该包含提取的字段。
www.com::part1::part2: