Finding a Match Within Another Match in Java Regular Expressions



To match a pattern within another match you need to compile the regular expression to match the outer pattern find the match retrieve the results and pass the results as input to the inner Matcher object.

Example

 Live Demo

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MatcherExample {
   public static void main(String[] args) {
      int start = 0, len = -1;
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter input text: ");
      String input = sc.nextLine();
      String regexOuter = "<b>(.*?)</b>";
      String regexInner = "\d+";
      //Creating a pattern object
      Pattern patternOuter = Pattern.compile(regexOuter);
      Pattern patternInner = Pattern.compile(regexInner);
      //Matching the compiled pattern in the String
      Matcher outerMatcher = patternOuter.matcher(input);
      while (outerMatcher.find()) {
         Matcher innerMatcher = patternInner.matcher(outerMatcher.group(1));
         while(innerMatcher.find()){
            System.out.println(innerMatcher.group());
         }
      }
   }
}

Output

Enter input text:
This is sample HTML data 123 sample text hello
123
Updated on: 2020-01-13T06:30:59+05:30

267 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements