首页 > 解决方案 > 根据格式过滤字符串

问题描述

我有一个字符串列表,我想根据模式parta-partb-partc 或 parta-partb-no-partc过滤掉它们。no 可以是任何正整数,而字符串的其他部分是固定的。

For example

parta-partb-partc
parta-partb-1-partc
parta-partb-1xyz-partc
parta-partb-123-partc
parta-partb-abc-partc

通过正则表达式过滤后,我的列表应该是

parta-partb-partc
parta-partb-1-partc
parta-partb-123-partc

我的问题是如何编写结合这两个条件的正则表达式?

标签: javaregex

解决方案


String#matches与以下正则表达式模式一起使用:

parta-partb-(?:\d+-)?partc

示例脚本:

String input = "parta-partb-1-partc";
if (input.matches("parta-partb-(?:\\d+-)?partc")) {
    System.out.println("MATCH");
}

请注意,String#matches默认情况下会将模式应用于整个输入字符串,因此不需要开始/结束锚点。


推荐阅读