我正在尝试编写正则表达式以从以下字符串中提取字段:
String str = "www.com::part1::part2:1363737603029:1472164||";
我需要提取到第2部分之后的“:”,即直到结肠后跟一个数字。正如你所看到的:字符在之前的地方显示为double,所以如果我写[^:]那么它会在www.com之后停止。我试过[^(:\ d +)],但也没用。请帮帮我。
谢谢,
keerthana
答案 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());
}