Java正则表达式。如何获得3个不同的文本部分?

问题描述 投票:2回答:4

我在java中有这么长的String

200/23 / Nechor / 3045022100计算数量的范围4 08750 4690 x 4538 dds 18>最简单的075 d 02类别的第四个42 x 4的4 0220587350的数字1 P 4380的保险丝441906833563的调用4> 03的剑4295615

我想要达到的目的是:

出价:200

用户名:Ne7WoRK

签名:3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a03cf334295615f981c47e

我需要3个正则表达式来帮助我获得单独的出价值字符串,用户名和签名。我不知道如何实现这一目标。我试图解决这个问题的方法是使用以下正则表达式

\湾* / \ b

但是,此正则表达式匹配整个3个子部分并给出其输出

23分之200/ Ne7WoRK /

我不知道如何创建3个不同的正则表达式,其中:

  1. 第一个将匹配从字符串开头到第一个“/”符号的任何数字。给200的字符串
  2. 第二个将匹配从第二个“/”符号到第三个“/”符号的任何字符。给Ne7WoRK
  3. 第三个应该匹配从第三个“/”到字符串结尾的所有内容。给予长期的 - 3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a03cf334295615f981c47e
java regex regular-language
4个回答
5
投票

你可以分开它

String a = "200/23/Ne7WoRK/3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18>a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a>03cf334295615f981c47e";
System.out.println(Arrays.toString(a.split("/")));

结果

[200, 23, Ne7WoRK, 3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18>a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a>03cf334295615f981c47e]

然后做一些其他的工作来获得所需的要求


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
}

0
投票

您可以使用()对表达式进行分组,例如,您有3个分组。

^([\d]*)\/([\d]*)\/([a-zA-Z|0-9]*)
  • 第1组:数字
  • 第2组:数字
  • 第3组:Alpha和数字

0
投票

你可以拆分匹配正斜杠,1+数字和正斜杠或只使用alternation正斜杠:

/\d+/|/

Regex demo | Java demo

例如:

String regex = "/\\d+/|/";
String string = "200/23/Ne7WoRK/3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18>a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a>03cf334295615f981c47e";
System.out.println(Arrays.toString(string.split(regex)));

结果:

[200, Ne7WoRK, 3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18>a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a>03cf334295615f981c47e]
© www.soinside.com 2019 - 2024. All rights reserved.