You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java正则表达式:如何提取文本中的三个不同部分?

解决方案:三个精准匹配的正则表达式

针对你给出的字符串结构,我们可以用三个目标明确的正则分别提取Bid、Username和Signature,下面是具体实现:

1. 提取Bid(开头到第一个"/"的数字)

正则表达式:

^(\d+)(?=/)

解释:

  • ^ 锚定字符串起始位置,确保从开头匹配
  • (\d+) 捕获一个或多个数字(即你的Bid值)作为分组1
  • (?=/) 正向预查,保证匹配的数字后紧跟斜杠,但不会把斜杠纳入结果

Java提取示例代码:

String input = "200/23/Ne7WoRK/3045022100d62568e28cb58b4a5308750e63e4690c4538ddc18>a9dc6075d02f7b4f942c4aa0220587350e7db1f4380a36ebb441906833563d32a62c4a>03cf334295615f981c47e";
Pattern bidPattern = Pattern.compile("^(\\d+)(?=/)");
Matcher bidMatcher = bidPattern.matcher(input);
if (bidMatcher.find()) {
    String bid = bidMatcher.group(1);
    System.out.println("Bid: " + bid); // 输出 Bid: 200
}

2. 提取Username(第二个"/"到第三个"/"之间的字符)

正则表达式:

(?<=/\d+/)([^/]+)(?=/)

解释:

  • (?<=/\d+/) 反向预查,确保前面是「斜杠+数字+斜杠」(对应字符串里的/23/部分)
  • ([^/]+) 捕获所有非斜杠字符(即你的用户名)作为分组1
  • (?=/) 正向预查,保证匹配内容后紧跟斜杠

Java提取示例代码:

Pattern usernamePattern = Pattern.compile("(?<=/\\d+/)([^/]+)(?=/)");
Matcher usernameMatcher = usernamePattern.matcher(input);
if (usernameMatcher.find()) {
    String username = usernameMatcher.group(1);
    System.out.println("Username: " + username); // 输出 Username: Ne7WoRK
}

3. 提取Signature(第三个"/"到字符串末尾的所有内容)

正则表达式:

(?<=/[^/]/[^/]/)(.*)

解释:

  • (?<=/[^/]/[^/]/) 反向预查,确保前面是三个斜杠分隔的前三个部分(200/23/Ne7WoRK/)
  • (.*) 捕获从该位置到字符串末尾的所有字符(包含>等特殊符号)

Java提取示例代码:

Pattern signaturePattern = Pattern.compile("(?<=/[^/]/[^/]/)(.*)");
Matcher signatureMatcher = signaturePattern.matcher(input);
if (signatureMatcher.find()) {
    String signature = signatureMatcher.group(1);
    System.out.println("Signature: " + signature);
}

额外小技巧:如果你想一次性匹配所有内容,也可以用一个包含三个分组的正则,效率更高:

^(\d+)/[^/]/([^/]+)/(.*)$

通过group(1)拿Bid,group(2)拿Username,group(3)拿Signature即可。

内容的提问来源于stack exchange,提问作者Ne7WoRK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:05:43