Java 基于格式筛选字符串

Java 基于格式筛选字符串,java,regex,Java,Regex,我有一个字符串列表,我想根据模式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-pa

我有一个字符串列表,我想根据模式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
我的问题是如何编写一个结合这两个条件的正则表达式?

使用
String#使用以下正则表达式模式匹配

parta-partb-(?:\d+-)?partc
示例脚本:

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

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

我不确定如何编写正则表达式来组合这两个条件。感谢您的回答。但是,它似乎与字符串parta partb partc不匹配。input.matches中的“\”也需要转义吗?@dividedbyzero您是对的,我已经更新了我的答案,谢谢。