Java 正则表达式。如何获得文本的 3 个不同部分?
Java regex. How to get 3 different parts of text?
我在 java
中有这个很长的字符串
200/23/Ne7WoRK/3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18>a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a>03cf334295615f981c47e
我想达到的目的是得到:
Bid: 200
Username: Ne7WoRK
Signature: 3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a03cf334295615f981c47e
我需要 3 个正则表达式来帮助我获得出价、用户名和签名的单独字符串。我不确定如何实现。我尝试使用以下正则表达式解决此问题
\b.*/\b
然而,这个正则表达式匹配了整个 3 个子部分并给出了这样的输出
200/23/Ne7WoRK/
我不确定如何创建 3 个不同的正则表达式,其中:
- 第一个将匹配从字符串开头到第一个“/”符号的任何数字。提供 200 个字符串
- 第二个将匹配从第二个“/”符号到第三个“/”符号的任何字符。给予 Ne7WorK
- 第三个应该匹配从第三个“/”到字符串末尾的所有内容。 Giving the long number of - 3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a03cf334295615f981c47e
试试这个:(\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 组:字母和数字
您可以使用 alternation:
拆分匹配正斜杠、1 位以上数字和正斜杠或仅匹配正斜杠
/\d+/|/
例如:
String regex = "/\d+/|/";
String string = "200/23/Ne7WoRK/3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18>a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a>03cf334295615f981c47e";
System.out.println(Arrays.toString(string.split(regex)));
结果:
[200, Ne7WoRK, 3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18>a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a>03cf334295615f981c47e]
我在 java
中有这个很长的字符串200/23/Ne7WoRK/3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18>a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a>03cf334295615f981c47e
我想达到的目的是得到:
Bid: 200
Username: Ne7WoRK
Signature: 3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a03cf334295615f981c47e
我需要 3 个正则表达式来帮助我获得出价、用户名和签名的单独字符串。我不确定如何实现。我尝试使用以下正则表达式解决此问题
\b.*/\b
然而,这个正则表达式匹配了整个 3 个子部分并给出了这样的输出
200/23/Ne7WoRK/
我不确定如何创建 3 个不同的正则表达式,其中:
- 第一个将匹配从字符串开头到第一个“/”符号的任何数字。提供 200 个字符串
- 第二个将匹配从第二个“/”符号到第三个“/”符号的任何字符。给予 Ne7WorK
- 第三个应该匹配从第三个“/”到字符串末尾的所有内容。 Giving the long number of - 3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a03cf334295615f981c47e
试试这个:(\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 组:字母和数字
您可以使用 alternation:
拆分匹配正斜杠、1 位以上数字和正斜杠或仅匹配正斜杠/\d+/|/
例如:
String regex = "/\d+/|/";
String string = "200/23/Ne7WoRK/3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18>a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a>03cf334295615f981c47e";
System.out.println(Arrays.toString(string.split(regex)));
结果:
[200, Ne7WoRK, 3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18>a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a>03cf334295615f981c47e]