Extracting Port Number from a localhost API Request to a Server using Regular Expressions
Last Updated :
14 Mar, 2023
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:
C++
// C++ code for the above approach:
#include <bits/stdc++.h>
#include <regex>
using namespace std;
// Function to extract the port
// Number from a given string
void extractPortNumber(string str)
{
// You can Add n number of API and
// its format to extract port
// Number formats in the below
// given String Array.
string strPattern[] = { "[:]{1}[0-9]{4}" };
for (int i = 0; i < 1; i++) {
regex pattern(strPattern[i]);
smatch matcher;
if (regex_search(str, matcher, pattern)) {
cout << matcher.str().substr(1) << endl;
}
}
}
// Driver Code
int main()
{
// String containing the
// API Request
string str = "http://localhost:8082/api/secure";
cout << "Given String is:\n" << str << endl;
cout << "Above Given API is running on Port Number:\n";
extractPortNumber(str);
return 0;
}
// This Code is Contributed by Prasad Kandekar(prasad264)
Java
// Java code for the above approach
import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class GFG {
// Driver Code
public static void main(String[] args)
{
// String containing the
// API Request
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);
}
// Function to extract the port
// Number from a given string
static void extractPortNumber(String str)
{
// You can Add n number of API and
// its format to extract port
// Number formats in the below
// given String Array.
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(":", ""));
}
}
}
}
C#
using System;
using System.Text.RegularExpressions;
class GFG {
static void Main(string[] args)
{
// String containing the
// API Request
string str = "http:/"
+ "/localhost:8082/api/secure";
Console.WriteLine("Given String is:\n" + str);
Console.WriteLine(
"Above Given API is running on Port Number:");
ExtractPortNumber(str);
}
static void ExtractPortNumber(string str)
{
// You can Add n number of API and
// its format to extract port
// Number formats in the below
// given String Array.
string[] strPattern = { "[:]{1}[0-9]{4}" };
for (int i = 0; i < strPattern.Length; i++) {
Regex pattern = new Regex(strPattern[i]);
MatchCollection matches = pattern.Matches(str);
foreach(Match match in matches)
{
Console.WriteLine(
match.Value.Replace(":", ""));
}
}
}
}
Python3
import re
# Function to extract the port number from a given string
def extractPortNumber(str):
# You can add n number of API and its format to extract port
# number formats in the below given String Array.
strPattern = [r"[:]{1}[0-9]{4}"]
for pattern in strPattern:
matches = re.findall(pattern, str)
for match in matches:
print(match.replace(":", ""))
# Driver code
if __name__ == "__main__":
# String containing the API request
str = "http://localhost:8082/api/secure"
print("Given String is:\n" + str)
print("Above Given API is running on Port Number:")
extractPortNumber(str)
JavaScript
// Function to extract the port
// Number from a given string
function extractPortNumber(str) {
// You can Add n number of API and
// its format to extract port
// Number formats in the below
// given String Array.
const strPattern = [ /[:]{1}[0-9]{4}/ ];
for (let i = 0; i < 1; i++) {
const pattern = strPattern[i];
const matcher = str.match(pattern);
if (matcher) {
console.log(matcher[0].substr(1));
}
}
}
// Driver Code
const str = "http://localhost:8082/api/secure";
console.log("Given String is:\n" + str);
console.log("Above Given API is running on Port Number:\n");
extractPortNumber(str);
OutputGiven String is:
http://localhost:8082/api/secure
Above Given API is running on Port Number:
8082
Complexity :
The time complexity of the above code depends on the size of the input string and the number of patterns in the strPattern array. Since the for loop only iterates once over the strPattern array, the time complexity is O(n), where n is the size of the input string. This is because the regular expression matching operation takes O(n) time in the worst case for an input string of size n.
The space complexity of the above code is also O(n) because it only stores the input string and the regular expression pattern in memory, both of which have a size proportional to n. Additionally, the matcher object created by regex_search has a space complexity that is dependent on the size of the input string, but since it is only used to extract the port number and not stored, it does not contribute to the overall space complexity.
Related Articles:
Similar Reads
Extracting PAN Number from GST Number Using Regular Expressions Given a string str in the form of a GST Number, the task is to extract the PAN Number from the given string. General Format of a GST Number: "22AAAAA0000A1Z5" 22: State CodeAAAAA0000A: Permanent Account Number (PAN)1: Entity Number of the same PANZ: Alphabet Z by default5: Checksum digit Examples: I
4 min read
Extracting Repository Name from a Given GIT URL using Regular Expressions Given a string str, the task is to extract Repository Name from the given GIT URL. Examples: GIT URL can be any of the formats mentioned below: Input: str="git://github.com/book-Store/My-BookStore.git"Output: My-BookStoreExplanation: The Repo Name of the given URL is: My-BookStore Input: str="git@gi
4 min read
Describe the procedure of extracting a query string with regular expressions A query string is a part of a URL that follows a question mark (?) and is used to pass data to a web page or application. It is typically composed of key-value pairs that are separated by an ampersand (&). The key represents the parameter and the value represents the data that is being passed th
6 min read
Check if an URL is valid or not using Regular Expression Given a URL as a character string str of size N.The task is to check if the given URL is valid or not.Examples : Input : str = "https://www.geeksforgeeks.org/" Output : Yes Explanation : The above URL is a valid URL.Input : str = "https:// www.geeksforgeeks.org/" Output : No Explanation : Note that
4 min read
Validate Phone Numbers ( with Country Code extension) using Regular Expression Given some Phone Numbers, the task is to check if they are valid or not using regular expressions. Rules for the valid phone numbers are: The numbers should start with a plus sign ( + )It should be followed by Country code and National number.It may contain white spaces or a hyphen ( - ).the length
5 min read
How to validate an IP address using Regular Expressions in Java Given an IP address, the task is to validate this IP address with the help of Regular Expressions.The IP address is a string in the form "A.B.C.D", where the value of A, B, C, and D may range from 0 to 255. Leading zeros are allowed. The length of A, B, C, or D can't be greater than 3.Examples: Inpu
3 min read
Validate GIT Repository using Regular Expression GIT stands for GLOBAL INFORMATION TRACKER.Given some Git repositories, the task is to check if they are valid or not using regular expressions. Rules for the valid Git Repository are: It is an alphanumeric string containing uppercase Alphabet letters(A-Z) and digits(0-9).It should not contain any wh
5 min read
Regular Expressions to validate International Tracking of Imports Given some International Tracking of Imports, the task is to check if they are valid or not using regular expressions. Rules for the valid International Tracking of Imports are: It is an alphanumeric string i.e., It contains UpperCase alphabet letters (A-Z) and digits(0-9).It does not contain whites
5 min read
How to validate an IP address using ReGex Given an IP address, the task is to validate this IP address with the help of Regex (Regular Expression) in C++ as a valid IPv4 address or IPv6 address. If the IP address is not valid then print an invalid IP address. Examples: Input: str = "203.120.223.13" Output: Valid IPv4 Input: str = "000.12.23
5 min read
Extract URLs present in a given string Given a string S, the task is to find and extract all the URLs from the string. If no URL is present in the string, then print "-1". Examples: Input: S = âWelcome to https://www.geeksforgeeks.org Computer Science PortalâOutput: https://www.geeksforgeeks.orgExplanation:The given string contains the U
5 min read