gpt4 book ai didi

java - 提取两个用空格填充的管道之间的数字

转载 作者:行者123 更新时间:2023-12-04 07:14:38 25 4
gpt4 key购买 nike

我正在努力使用正则表达式来查找此行中管道 {1, 2, 3, 4, 5, 6 ...} 之间的数字匹配;

| 2021-08-18 01:28 | Twitter | [INTL TWITTER AAA BBB CC ] (https://twitter.c.xx-xx-2.aaaa.com/#/groups/123) | Twitter XX (C++, C#) | 1 | 2 | 3 | 4 | [ aaaa ] | 5 | 6 | 7 |


我最好的尝试是这个:
\| 2021-08-18 01:28 \| Twitter \| \[INTL TWITTER AAA BBB CC ] \(https:\/\/twitter\.c\.xx-xx-2\.aaaa\.com\/#\/groups\/123\) \| Twitter XX \(C\+\+, C#\) \| (\d+) \| (\d+) \| (\d+) \| (\d+) \| \[ aaaa ] \| (\d+) \| (\d+) \| (\d+) \| 
它实际上正在工作,但它看起来很硬编码......如果你能提出改进建议,我将不胜感激
提前致谢! :)

最佳答案

您可以使用

\|\s*(\d+)(?=\s*\|)
regex demo .细节:
  • \| - 管道字符
  • \s* - 零个或多个空格
  • (\d+) - 第 1 组:一位或多位数字
  • (?=\s*\|) - 与紧随其后的零个或多个空格和管道字符的位置匹配的正向前瞻。

  • Java demo :
    String s = "| 2021-08-18 01:28 | Twitter | [INTL TWITTER AAA BBB CC ] (https://twitter.c.xx-xx-2.aaaa.com/#/groups/123) | Twitter XX (C++, C#) | 1 | 2 | 3 | 4 | [ aaaa ] | 5 | 6 | 7 |";
    Pattern pattern = Pattern.compile("\\|\\s*(\\d+)(?=\\s*\\|)");
    Matcher matcher = pattern.matcher(s);
    while (matcher.find()){
    System.out.println(matcher.group(1));
    }
    // => 1, 2, 3, 4, 5, 6, 7

    关于java - 提取两个用空格填充的管道之间的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68845941/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com