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

Kaz*_*ara 0 java regex

假设我有一个String,比方说one two three one one two one.现在我正在使用a Pattern和a Matcher来查找任何具体Pattern的内容String.像这样:

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

但是,假设我想找到多种模式.对于String我采取的例子,我想找到onetwo.现在它是一个非常小的字符串,所以可能的解决方案是使用另一个Pattern并找到我的匹配.但是,这只是一个小例子.有没有一种有效的方法来做到这一点,而不是仅仅在一组循环中尝试它Pattern

Mat*_*all 6

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

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

  • 只需使用循环动态创建字符串一|二|三.. (3认同)
  • 这实际上取决于你正在尝试做什么.如果模式看起来仍然像您的示例中那样,则根本不需要模式.你可以使用`String#contains()`.或者做阿米特所说的. (2认同)