我在Java中有一个很长的字符串
200/23 / Ne7WoRK / 3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18> a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a> 03cf334295615f981c47
我想要获得的是:
出价:200
用户名:Ne7WoRK
签名:3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a03cf334295615f981c47e
我需要3个正则表达式,这些表达式可以帮助我获取出价值,用户名和签名的单独字符串。我不确定如何实现这一目标。我试图通过以下正则表达式来解决这个问题
\ b。* / \ b
但是,此正则表达式匹配整个3个子部分并给出其输出
200/23 / Ne7WoRK /
我不确定如何在以下位置创建3个不同的正则表达式:
答案 0 :(得分:5)
您可以拆分
String a = "200/23/Ne7WoRK/3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18>a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a>03cf334295615f981c47e";
System.out.println(Arrays.toString(a.split("/")));
结果
[200, 23, Ne7WoRK, 3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18>a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a>03cf334295615f981c47e]
然后做一些其他工作来获得想要的需求
答案 1 :(得分:1)
尝试以下操作:(\d+)\/(?:.+)\/(.+)\/(.+)
它将为您提供包含3个字符串的3个组。
用于此目的的Java代码为:
Matcher matcher = Pattern.compile("(\d+)\/(?:.+)\/(.+)\/(.+)").matcher(yourString);
if (matcher.find()) {
String bid = matcher.group(1);
String username = matcher.group(2);
String signature = matcher.group(3);
} else {
// Malformed String
}
答案 2 :(得分:0)
您可以使用()将表达式分组 例如,您将有3个分组。
^([\d]*)\/([\d]*)\/([a-zA-Z|0-9]*)
答案 3 :(得分:0)
您可以使用alternation来匹配正斜杠,1 +位数字和正斜杠,或者仅匹配正斜杠:
FileStorage
例如:
/\d+/|/
结果:
String regex = "/\\d+/|/";
String string = "200/23/Ne7WoRK/3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18>a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a>03cf334295615f981c47e";
System.out.println(Arrays.toString(string.split(regex)));