Problem Statement: Given a String extract the substring enclosed in single quotes (‘) using Java Regex.
Java regex is an API for pattern matching with regular expression. ‘java.util.regex’ is a class used for CharSequence< interface in order to support matching against characters from a wide variety of input sources. It is not allowed to pass a null argument to any classes or interfaces as it will throw out an exception called <. Hence, it can be concluded ‘java.util.regex’ is containing Interface and classes as follows:
- Classes
- Matcher: A engine that performs match operations on a character sequence by interpreting a Pattern.
- Pattern: A compiled representation of a regular expression.
Illustration:
Input : "Out of this String required only is 'Geeks for Geeks' only'" Output : Geeks for Geeks Input : "The data wanted is'Java Regex'" Output : Java Regex
Example
// Java program to demonstrate extracting // substring enclosed in single quotes // Importing Matcher and Pattern class // from regex class of java.util package // Importing input output classes import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
// Class public class GFG {
// Main driver method
public static void main(String[] args)
{
// Custom input
String string1
= "Out of this String I want 'Geeks for Geeks' only" ;
// Desired custom output
String string2
= "The data that I want is'Java Regex'" ;
// Paranthesis indicate it is a group and signifies
// it can have substring enclosed in single quote
Pattern p = Pattern.compile( ".*'([^']*)'.*" );
// This method returns a pattern object
// Calling matcher() method of pattern object
// and passing input character sequence
Matcher m1 = p.matcher(string1);
Matcher m2 = p.matcher(string2);
// Printing complete entered string 1
System.out.println( "String to be extracted : "
+ string1);
// Condition check using matches() method which
// looks out for content if any in single quote
if (m1.matches()) {
// Print the required sub-string
System.out.println( "Extracted part : "
+ m1.group( 1 ));
}
// New line
System.out.println();
// Printing complete entered string 2
System.out.println( "String to be extracted : "
+ string2);
// Condition check using matches() method which
// looks out for content if any in single quote
if (m2.matches()) {
// Print the required sub-string
System.out.println( "Extracted part : "
+ m2.group( 1 ));
}
}
} |
String to be extracted : Out of this String I want 'Geeks for Geeks' only Extracted part : Geeks for Geeks String to be extracted : The data that I want is'Java Regex' Extracted part : Java Regex
Time complexity : O(n), where n is the length of the input strings “string1” and “string2”.
Space complexity :O(1), as the space used by the program remains constant regardless of the size of the input strings.