是否可以基于Java中的两个子模式构建模式

时间:2016-11-06 18:57:53

标签: java regex

Pattern p1 = Pattern.compile(".................");
Pattern p2 = Pattern.compile("xxxxxxxxxxxxxxxxxxx");

由于p1和p2都很长,并且很难编写单个模式来覆盖p1和p2中的所有情况。是否可以编写另一个基于p1和p2构建的模式p3,这样我只能运行一个匹配器:

Matcher m = p3.matcher(str);

2 个答案:

答案 0 :(得分:3)

您可以使用它来组合模式:

Pattern pattern = Pattern.compile(".................|xxxxxxxxxxxxxxxxxxx");

匹配任何一个:

Matcher matcher = pattern.matcher(s);

答案 1 :(得分:1)

当然,您只需将模式字符串|结合使用即可。如果您的字符串代表模式string1string2,那么字符串string1|string2将匹配 模式。在您的示例中,您可以使用字符串".................|xxxxxxxxxxxxxxxxx"

当然,如果您使用捕获组或重复匹配模式与子串的匹配,事情会变得更加复杂,因为那时不清楚“组合”模式的确切含义,但是对于简单匹配/无数学这种情况有效。