Extract maximum numeric value from a given string | Set 2 (Regex approach)

Given an alphanumeric string, extract maximum numeric value from that string.

Examples:

Input : 100klh564abc365bg
Output : 564
Maximum numeric value among 100, 564 
and 365 is 564.
Input : abchsd0365sdhs
Output : 365

In Set 1, we have discussed general approach for extract numeric value from given string.In this post, we will discuss regular expression approach for same.

Below is one of the regular expression for at least one numeric digit.

\d+

So Regex solution is simple:

  1. Initialize MAX = 0
  2. Run loop over matcher, whenever match found, convert numeric string to integer and compare it with MAX.
    • If number greater than MAX, update MAX to number.
  3. Return MAX at the last.
filter_none

edit
close

play_arrow

link
brightness_4
code

// Java regex program to extract the maximum value
  
import java.util.regex.Matcher;
import java.util.regex.Pattern;
  
class GFG 
{
    // Method to extract the maximum value
    static int extractMaximum(String str)
    {
        // regular expression for atleast one numeric digit
        String regex = "\\d+";
          
        // compiling regex
        Pattern p = Pattern.compile(regex);
          
        // Matcher object
        Matcher m = p.matcher(str);
          
        // initialize MAX = 0
        int MAX = 0;
          
        // loop over matcher
        while(m.find())
        {
            // convert numeric string to integer
            int num = Integer.parseInt(m.group());
              
            // compare num with MAX, update MAX if num > MAX
            if(num > MAX)
                MAX = num;
        }
           
        return MAX;    
    }
  
    public static void main (String[] args)
    {
        String str = "100klh564abc365bg";
          
        System.out.println(extractMaximum(str));
    }
}

chevron_right


Output:

564

But above program wouldn’t work if number is greater that integer range. You can try parseLong() method for numbers upto long range.But to handle the case of large numbers(greater than long range) we can take help of BigInteger class in java. Below is the java program to demonstrate the same.

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java regex program to extract the maximum value
// in case of large numbers
  
import java.math.BigInteger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
  
class GFG 
{
    // Method to extract the maximum value
    static BigInteger extractMaximum(String str)
    {
        // regular expression for atleast one numeric digit
        String regex = "\\d+";
          
        // compiling regex
        Pattern p = Pattern.compile(regex);
          
        // Matcher object
        Matcher m = p.matcher(str);
          
        // initialize MAX = 0
        BigInteger MAX = BigInteger.ZERO;
          
        // loop over matcher
        while(m.find())
        {
            // convert numeric string to BigIntegr
            BigInteger num = new BigInteger(m.group());
              
            // compare num with MAX, update MAX if num > MAX
            if(num.compareTo(MAX) > 0)
                MAX = num;
        }
           
        return MAX;    
    }
  
    public static void main (String[] args)
    {
        String str = "100klh564231315151313151315abc365bg";
          
        System.out.println(extractMaximum(str));
    }
}

chevron_right


Output:

564231315151313151315

This article is contributed by Gaurav Miglani. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.



My Personal Notes arrow_drop_up


Article Tags :
Practice Tags :


1


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.