regex 如何合并正则表达式并从String列表中获取一个字符串?

sxissh06  于 2023-03-24  发布在  其他
关注(0)|答案(1)|浏览(69)

我有一个字符串的列表

List<String> strList = Arrays.asList(new String[]{"pty_abddd_20220220_20220221","pty_hello_20220220_20220221","abc_gecko_20022023_21022023","pty_abddd_20220221_20220222"});

从这里我想提取字符串“pty”和数字开始的“20022023"。
我已经试过了,并得到他们分别与此代码

String date = "20220221";
        List<String> testList = new ArrayList<>();
        List<String> testList1 = new ArrayList<>();
        List<String> strList = Arrays.asList(new String[]{"pty_abddd_20220220_20220221","pty_hello_20220220_20220221","abc_gecko_20022023_21022023","pty_abddd_20220221_20220222"});

        for (String str : strList) {
            if (str.contains("pty")) {
                testList.add(str);
            }
        }
        for (String ts : testList) {
            Matcher matcher = Pattern.compile("\\d+").matcher(ts);
            if(matcher.find()){
                String str = matcher.group();
                if(str.equals(date))
                    System.out.println(ts);
            }
        }

输出将是pty_abddd_20220221_20220222有没有一种方法可以将它们与正则表达式结合起来,请帮助谢谢

r3i60tvu

r3i60tvu1#

这将提取以pty开头并以数字20022023开头的字符串:

List<String> found = strList.stream()
  .filter(s -> s.matches("pty\\D+20022023.*"))
  .collect(Collectors.toList());

但请注意,您的示例中的字符串都不是这样的。

相关问题