如何在find()之后识别模式名称



如何根据以下代码确定模式名称:

   Matcher m;
   if( ((m = PATTERN_1.matcher(text)).find()) ||
       ((m = PATTERN_2.matcher(text)).find()) )
      {
         System.out.println("Pattern: " + m.patternName?);  // how can I determine the matched pattern?
         // i.e - "Pattern: PATTERN_1"
      }

我认为Matcher#pattern()应该对您有效。

考虑这个代码:

Matcher m;
Pattern PATTERN_1=Pattern.compile("\d+");
Pattern PATTERN_2=Pattern.compile("[a-z]+");
String text="abc";
if( ((m = PATTERN_1.matcher(text)).find()) ||
    ((m = PATTERN_2.matcher(text)).find()) ) {
    System.out.println("PATTERN: " + m.pattern());
}
// prints: PATTERN: [a-z]+

最新更新