Java 如何在正则表达式中组合多个字符串?
我正在尝试使用正则表达式匹配字符串。下面是我需要匹配的字符串-Java 如何在正则表达式中组合多个字符串?,java,regex,string,Java,Regex,String,我正在尝试使用正则表达式匹配字符串。下面是我需要匹配的字符串- /pp/dc/phxd/y1 /pp/dc/slcw/y1 /pp/dc/lvsr/y1 /ppuu/dc/phxd/y1 /ppuu/dc/slcw/y1 /ppuu/dc/lvsr/y1 下面是我得到的正则表达式,它工作得很好- Pattern pattern = Pattern.compile("^/(pp|ppuu)/dc/(phxd|slcw|lvsr)/y[0-9]+$"); Matcher m = pat
/pp/dc/phxd/y1
/pp/dc/slcw/y1
/pp/dc/lvsr/y1
/ppuu/dc/phxd/y1
/ppuu/dc/slcw/y1
/ppuu/dc/lvsr/y1
下面是我得到的正则表达式,它工作得很好-
Pattern pattern = Pattern.compile("^/(pp|ppuu)/dc/(phxd|slcw|lvsr)/y[0-9]+$");
Matcher m = pattern.matcher(string_to_test);
if(m.find()) {
}
现在,除了上面的字符串之外,我还需要匹配下面的字符串-
/pp/dc/phxd
/pp/dc/slcw
/pp/dc/lvsr
/ppuu/dc/phxd
/ppuu/dc/slcw
/ppuu/dc/lvsr
/pp/dc
/ppuu/dc
/pp
/ppuu
有没有办法找到一个正则表达式来匹配上面所有的字符串?只需将最后三部分添加到一个非捕获组中,作为可选部分
^/(pp|ppuu)(?:/dc)?(?:/(phxd|slcw|lvsr))?(?:/y[0-9]+)?$
?:。。打过电话?在非捕获组之后,将相应的组作为可选组。只需将其设置为一系列选项即可
# ^/(pp|ppuu)(?:/dc(?:/(phxd|slcw|lvsr)(?:(/y[0-9]+))?)?)?$
^ /
( pp | ppuu )
(?:
/dc
(?:
/
( phxd | slcw | lvsr )
(?:
( /y [0-9]+ )
)?
)?
)?
$
是的,您需要添加嵌套?关于可选的部分。@user2809564-请注意,您接受的答案是不正确的。@sln我明白了,您能解释一下为什么不正确,以便我测试一下吗?@user2809564-您列出了级联依赖项/选项的完整示例。您选择的答案不会这样做。将来看到这篇文章的人会感到困惑。更改您的问题陈述以显示不存在依赖项。例如,您可以添加I还需要匹配/ppuu/y1和所有其他排列。
Pattern pattern = Pattern.compile("^(?<match>/.+)/.+");
Matcher m = pattern.matcher("str_input");
while (m.find()) {
String match = m.group("match");
System.out.println(match);
m = pattern.matcher(match);
}