如何在Java中找到多个模式(使用Matcher)

如何在Java中找到多个模式(使用Matcher),java,regex,Java,Regex,假设我有一个字符串,比如说一二三一二一。 现在我使用模式和匹配器在字符串中查找任何特定的模式。 像这样: Pattern findMyPattern = Pattern.compile("one"); Matcher foundAMatch = findMyPattern.matcher(myString); while(foundAMatch.find()) // do my stuff 但是,假设我想找到多个模式。对于我使用的示例String,我想同时查找one和tw

假设我有一个
字符串
,比如说
一二三一二一
。 现在我使用
模式
匹配器
字符串中查找任何特定的
模式
。 像这样:

Pattern findMyPattern = Pattern.compile("one");
Matcher foundAMatch = findMyPattern.matcher(myString);
while(foundAMatch.find())
           // do my stuff

但是,假设我想找到多个模式。对于我使用的示例
String
,我想同时查找
one
two
。现在它是一个非常小的字符串,所以可能的解决方案是使用另一个
模式
并查找匹配项。但是,这只是一个小例子。有没有一种有效的方法可以做到这一点,而不仅仅是在所有
模式集上循环尝试它?

使用正则表达式的强大功能:更改模式以匹配
1
2

Pattern findMyPattern = Pattern.compile("one|two");
Matcher foundAMatch = findMyPattern.matcher(myString);
while(foundAMatch.find())
           // do my stuff

使用正则表达式的强大功能:更改模式以匹配
one
two

Pattern findMyPattern = Pattern.compile("one|two");
Matcher foundAMatch = findMyPattern.matcher(myString);
while(foundAMatch.find())
           // do my stuff

这并不能解决我的问题,这样我们就可以把(1 | 2)变成一个特定的字符串

但我的要求是改变
模式一->三&二->四

这不能解决我的问题,这样我们可以将(一|二)更改为一个特定的字符串

但我的要求是改变
模式一->三和二->四

我在问题中提到过,这只是一个小例子。如果我有很多(比如说100多个)模式可以匹配呢?只要创建字符串1 | 2 | 3。。动态地使用循环它实际上取决于您正试图做什么。如果模式看起来仍然像示例中的模式,那么您根本不需要模式。您可以使用
String#contains()
。或者按照阿米特的建议去做。我在问题中提到过,这只是一个小例子。如果我有很多(比如说100多个)模式可以匹配呢?只要创建字符串1 | 2 | 3。。动态地使用循环它实际上取决于您正试图做什么。如果模式看起来仍然像示例中的模式,那么您根本不需要模式。您可以使用
String#contains()
。或者按照埃米特的建议去做。