gpt4 book ai didi

java - 在捕获的组上应用正则表达式

转载 作者:行者123 更新时间:2023-11-29 07:40:58 24 4
gpt4 key购买 nike

我是 Java 的新手,尤其是正则表达式我有一个类似于以下内容的 CSV 文件:

col1,col2,clo3,col4
word1,date1,date2,port1,port2,....some amount of port
word2,date3,date4,
....

我想要的是遍历每一行(我想我会用简单的 for 循环来完成)并取回所有端口。我想我需要的是在两个日期之后获取所有东西并寻找,(\d+),? 和返回的组

我的问题是:

1)可以用一个表达式完成吗? (意思是,不将结果存储在字符串中,然后应用另一个正则表达式)

2) 我可以将对行的迭代合并到正则表达式中吗?

最佳答案

有很多方法可以做到这一点,我将展示一些用于教育目的。

为了示例,我将您的输入放在 String 中,您必须正确阅读它。我还将结果存储在 List 中并在最后打印它们:

public static void main(String[] args) {

String source = "col1,col2,clo3,col4" + System.lineSeparator() +
"word1,date1,date2,port1,port2,port3" + System.lineSeparator() +
"word2,date3,date4";
List<String> ports = new ArrayList<>();

// insert code blocks bellow

System.out.println(ports);
}
  • 使用扫描器:

    Scanner scanner = new Scanner(source);
    scanner.useDelimiter("\\s|,");
    while (scanner.hasNext()) {
    String token = scanner.next();
    if (token.startsWith("port"))
    ports.add(token);
    }
  • 使用 String.split:

    String[] values = source.split("\\s|,");
    for (String value : values) {
    if (value.startsWith("port"))
    ports.add(value);
    }
  • 使用Pattern-Matcher:

    Matcher matcher = Pattern.compile("(port\\d+)").matcher(source);
    while (matcher.find()) {
    ports.add(matcher.group());
    }

输出:

[port1, port2, port3]

如果您知道“端口”在文件中的位置,则可以使用该信息通过指定位置和获取子字符串来略微提高性能。

关于java - 在捕获的组上应用正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30231884/

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