簡體   English   中英

Java正則表達式。 如何獲得文本的3個不同部分?

[英]Java regex. How to get 3 different parts of text?

我在Java中有這個很長的字符串

23分之200/ Ne7WoRK / 3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18> a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a> 03cf334295615f981c47e

我要實現的目標是:

競標價格:200

用戶名:Ne7WoRK

簽名:3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a03cf334295615f981c47e

我需要3個正則表達式,可以幫助我分別獲取出價值,用戶名和簽名的字符串。 我不確定如何實現這一目標。 我試圖解決此問題的方法是使用以下正則表達式

\\灣* / \\ b

但是,此正則表達式匹配整個3個子部分,並給出了此輸出

23分之200/ Ne7WoRK /

我不確定如何創建3個不同的正則表達式,其中:

  1. 第一個將匹配從字符串開頭到第一個“ /”符號的任何數字。 給200的弦
  2. 第二個將匹配從第二個“ /”符號到第三個“ /”符號的任何字符。 給Ne7WoRK
  3. 第三個應該匹配從第三個“ /”到字符串末尾的所有內容。 提供大量的-3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a03cf334295615f981c47e

你可以拆分

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

結果

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

然后做一些其他的工作來獲得想要的需求

試試這個: (\\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
}

您可以使用()對表達式進行分組,例如,您可以分為3個分組。

^([\d]*)\/([\d]*)\/([a-zA-Z|0-9]*)
  • 第一組:數字
  • 第二組:數字
  • 第3組:字母和數字

您可以使用交替符號來匹配正斜杠,1 +數字和正斜杠,或者僅匹配正斜杠:

/\d+/|/

正則表達式演示 | Java演示

例如:

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

結果:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM