Extracting Port Number from a localhost API Request to a Server using Regular Expressions

Kashish Kumar
Published: February 7, 2023

Improve Article

Save Article

Like Article

Improve Article

Save Article

Given a String test_str as localhost API Request Address, the task is to get the extract port number of the service.

Examples:

Input: test_str = ‘http://localhost:8109/users/addUsers’
Output: 8109
Explanation: Port Number, 8109 extracted.

Input: test_str = ‘http://localhost:1337/api/products’
Output: 1337
Explanation: Port Number, 1337 extracted.

Approach: The problem can be solved based on the following idea:

Create a regex pattern to validate the number as written below:   
regex = “[:]{1}[0-9]{4, }“

Where,  

  • [:]: This pattern will match if one of the preceding is a colon character
  • [0-9]{4} : This pattern will allow 4 or more than 4 preceding elements if they are digits.

Follow the below steps to implement the idea:

  • Create a regex expression to extract all the Port numbers from the string.
  • Use Pattern class to compile the regex formed.
  • Use the matcher function to find.

Below is the code implementation of the above-discussed approach:

Java

import java.io.*;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

  

public class GFG {

  

    

    public static void main(String[] args)

    {

  

        

        

        String str = "http:/"

                     + "/localhost:8082/api/secure";

        System.out.println("Given String is:\n" + str);

        System.out.println(

            "Above Given API is running on Port Number:");

        extractPortNumber(str);

    }

  

    

    

    static void extractPortNumber(String str)

    {

  

        

        

        

        

        String strPattern[] = { "[:]{1}[0-9]{4}" };

        for (int i = 0; i < strPattern.length; i++) {

            Pattern pattern

                = Pattern.compile(strPattern[i]);

            Matcher matcher = pattern.matcher(str);

            while (matcher.find()) {

                System.out.println(

                    matcher.group().replace(":", ""));

            }

        }

    }

}

Output

Given String is:
http://localhost:8082/api/secure
Above Given API is running on Port Number:
8082

Related Articles:

Source: www.geeksforgeeks.org