Java正则表达式。如何获得文本的3个不同部分?
我有一个很长的java字符串 200/23/Ne7WoRK/3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18>A9DC6075D02F7B4F942C4AA02205877350E7DB1F4380A36EBB441906833563D32A62C4A>03cf334295615f981c47e 我想要实现的是: 出价:200 用户名:Ne7WoRK 签字:3045022100D62568E28CB58B4A5308750E43E4690C4538DDC18A9DC6075D02F7B4F942C4AA0220587350E7DB1F4380A36EBB4419033563D32A62C4A03CF334295615F981C47E 我需要3个正则表达式,这将帮助我获得出价值,用户名和签名的单独字符串。我不知道如何实现这一目标。我试图用下面的正则表达式来解决这个问题 \b、 */\b 但是,此正则表达式匹配整个3个子部分,并给出此子部分的输出 200/23/NE7工作/ 我不知道如何创建3个不同的正则表达式,其中:Java正则表达式。如何获得文本的3个不同部分?,java,regex,regular-language,Java,Regex,Regular Language,我有一个很长的java字符串 200/23/Ne7WoRK/3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18>A9DC6075D02F7B4F942C4AA02205877350E7DB1F4380A36EBB441906833563D32A62C4A>03cf334295615f981c47e 我想要实现的是: 出价:200 用户名:Ne7WoRK 签字:3045022100D62568E28CB58B4A5308750E43E4690C4
(\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
}
你可以把它分开
String a = "200/23/Ne7WoRK/3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18>a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a>03cf334295615f981c47e";
System.out.println(Arrays.toString(a.split("/")));
结果
[200, 23, Ne7WoRK, 3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18>a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a>03cf334295615f981c47e]
然后做一些其他工作以获得所需的需求您可以使用() 例如,您将有3个分组
^([\d]*)\/([\d]*)\/([a-zA-Z|0-9]*)
- 第1组:数字
- 第2组:数字
- 第3组:字母和数字
String regex = "/\\d+/|/";
String string = "200/23/Ne7WoRK/3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18>a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a>03cf334295615f981c47e";
System.out.println(Arrays.toString(string.split(regex)));
结果:
[200, Ne7WoRK, 3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18>a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a>03cf334295615f981c47e]
当你还不知道正则表达式是否是这项工作的最佳工具时,你不应该问关于正则表达式的问题。在本例中,它们不是,因为简单的
String.split
就足够了。您应该使用matcher.match()
而不是matcher.find()
,以捕获更多无效字符串。
[200, Ne7WoRK, 3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18>a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a>03cf334295615f981c47e]