Regular Expression :
Agenda
IntroductionA Regular Expression is a expression which represents a group of Strings according to a particular pattern. Example:
The main important application areas of Regular Expression are:
Example:
import java.util.regex.*;
class RegularExpressionDemo
{
public static void main(String[] args)
{
int count=0;
Pattern p=Pattern.compile("ab");
Matcher m=p.matcher("abbbabbaba");
while(m.find())
{
count++;
System.out.println(m.start()+"------"+m.end()+"------"+m.group());
}
System.out.println("The no of occurences :"+count);
}
}
Output:
0------2------ab
4------6------ab
7------9------ab
The no of occurrences: 3
Pattern class:
Example: Pattern p=Pattern.compile("ab");
Note: if we refer API we will get more information about pattern class.
Matcher: A Matcher object can be used to match character sequences against a Regular Expression.
public Matcher matcher(String target);
Matcher m=p.matcher("abbbabbaba");
Important methods of Matcher class:
Note: Pattern and Matcher classes are available in java.util.regex package, and introduced in 1.4 version Character classes:
Example:
import java.util.regex.*;
class RegularExpressionDemo
{
public static void main(String[] args)
{
Pattern p=Pattern.compile("x");
Matcher m=p.matcher("a1b7@z#");
while(m.find())
{
System.out.println(m.start()+"-------"+m.group());
}
}
}
Output:![]() Predefined character classes:
\s---------------------space character
Example:
import java.util.regex.*;
class RegularExpressionDemo
{
public static void main(String[] args)
{
Pattern p=Pattern.compile("x");
Matcher m=p.matcher("a1b7 @z#");
while(m.find())
{
System.out.println(m.start()+"-------"+m.group());
}
}
}
Output:
![]() Quantifiers:Quantifiers can be used to specify no of characters to match.a-----------------------Exactly one 'a' a+----------------------At least one 'a' a*----------------------Any no of a's including zero number a? ----------------------At most one 'a'
Example:
import java.util.regex.*;
class RegularExpressionDemo
{
public static void main(String[] args)
{
Pattern p=Pattern.compile("x");
Matcher m=p.matcher("abaabaaab");
while(m.find())
{
System.out.println(m.start()+"-------"+m.group());
}
}
}
Output:
![]() Pattern class split() method:Pattern class contains split() method to split the given string against a regular expression.
Example 1:
import java.util.regex.*;
class RegularExpressionDemo
{
public static void main(String[] args)
{
Pattern p=Pattern.compile("\\s");
String[] s=p.split("ashok software solutions");
for(String s1:s)
{
System.out.println(s1);//ashok
//software
//solutions
}
}
}
Example 2:
import java.util.regex.*;
class RegularExpressionDemo
{
public static void main(String[] args)
{
Pattern p=Pattern.compile("\\."); //(or)[.]
String[] s=p.split("www.dugrajobs.com");
for(String s1:s)
{
System.out.println(s1);//www
//dugrajobs
//com
}
}
}
String class split() method:String class also contains split() method to split the given string against a regular expression.
Example:
import java.util.regex.*;
class RegularExpressionDemo
{
public static void main(String[] args)
{
String s="www.saijobs.com";
String[] s1=s.split("\\.");
for(String s2:s1)
{
System.out.println(s2);//www
//saijobs
//com
}
}
}
Note : String class split() method can take regular expression as argument where as pattern class split() method can take target string as the argument. StringTokenizer:
Example 1:
import java.util.*;
class RegularExpressionDemo
{
public static void main(String[] args)
{
StringTokenizer st=new StringTokenizer("sai software solutions");
while(st.hasMoreTokens())
{
System.out.println(st.nextToken());//sai
//software
//solutions
}
}
}
The default regular expression for the StringTokenizer is space.
Example 2:
import java.util.*;
class RegularExpressionDemo
{
public static void main(String[] args)
{
Write a regular expression to represent all valid identifiers in java language.Rules:The allowed characters are:
Program:
import java.util.regex.*;
class RegularExpressionDemo
{
public static void main(String[] args)
{
Pattern p=Pattern.compile("[a-zA-Z][a-zA-Z0-9-#]+"); (or)
Pattern p=Pattern.compile("[a-zA-Z][a-zA-Z0-9-#][a-zA-Z0-9-#]*");
Matcher m=p.matcher(args[0]);
if(m.find()&&m.group().equals(args[0]))
{
System.out.println("valid identifier");
}
else
{
System.out.println("invalid identifier");
}
}
}
Output:
E:\scjp>javac RegularExpressionDemo.java
E:\scjp>java RegularExpressionDemo ashok
Valid identifier
E:\scjp>java RegularExpressionDemo ?ashok
Invalid identifier
Program:
import java.util.regex.*;
class RegularExpressionDemo
{
public static void main(String[] args)
{
Pattern p=Pattern.compile("
[7-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]");
//Pattern p=Pattern.compile("[7-9][0-9]{9}");
Matcher m=p.matcher(args[0]);
if(m.find()&&m.group().equals(args[0]))
{
System.out.println("valid number");
}
else
{
System.out.println("invalid number");
}
}
}
Analysis:
10 digits mobile:
[7-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] (or)
[7-9][0-9]{9}
Output:
E:\scjp>javac RegularExpressionDemo.java
E:\scjp>java RegularExpressionDemo 9989123456
Valid number
E:\scjp>java RegularExpressionDemo 6989654321
Invalid number
10 digits (or) 11 digits:
(0?[7-9][0-9]{9})
Output:
E:\scjp>javac RegularExpressionDemo.java
E:\scjp>java RegularExpressionDemo 9989123456
Valid number
E:\scjp>java RegularExpressionDemo 09989123456
Valid number
E:\scjp>java RegularExpressionDemo 919989123456
Invalid number
10 digits (0r) 11 digit (or) 12 digits:
(0|91)?[7-9][0-9]{9} (or)
(91)?(0?[7-9][0-9]{9})
E:\scjp>javac RegularExpressionDemo.java
E:\scjp>java RegularExpressionDemo 9989123456
Valid number
E:\scjp>java RegularExpressionDemo 09989123456
Valid number
E:\scjp>java RegularExpressionDemo 919989123456
Valid number
E:\scjp>java RegularExpressionDemo 69989123456
Invalid number
Requirement:Write a regular expression to represent all Mail Ids.
Program:
import java.util.regex.*;
class RegularExpressionDemo
{
public static void main(String[] args)
{
Pattern p=Pattern.compile("
[a-zA-Z][a-zA-Z0-9-.]*@[a-zA-Z0-9]+([.][a-zA-Z]+)+");
Matcher m=p.matcher(args[0]);
if(m.find()&&m.group().equals(args[0]))
{
System.out.println("valid mail id");
}
else
{
System.out.println("invalid mail id");
}
}
}
Output:
E:\scjp>javac RegularExpressionDemo.java
E:\scjp>java RegularExpressionDemo sunmicrosystem@gmail.com
Valid mail id
E:\scjp>java RegularExpressionDemo 999sunmicrosystem@gmail.com
Invalid mail id
E:\scjp>java RegularExpressionDemo 999sunmicrosystem@gmail.co9
Invalid mail id
Requirement:Write a program to extract all valid mobile numbers from a file.Diagram: ![]()
Program:
import java.util.regex.*;
import java.io.*;
class RegularExpressionDemo
{
public static void main(String[] args)throws IOException
{
PrintWriter out=new PrintWriter("output.txt");
BufferedReader br=new BufferedReader(new FileReader("input.txt"));
Pattern p=Pattern.compile("(0|91)?[7-9][0-9]{9}");
String line=br.readLine();
while(line!=null)
{
Matcher m=p.matcher(line);
while(m.find())
{
out.println(m.group());
}
line=br.readLine();
}
out.flush();
}
}
Requirement:Write a program to extract all Mail IDS from the File.Note: In the above program replace mobile number regular expression with MAIL ID regular expression. Requirement:Write a program to display all .txt file names present in E:\scjp folder.
Program:
import java.util.regex.*;
import java.io.*;
class RegularExpressionDemo
{
public static void main(String[] args)throws IOException
{
int count=0;
Pattern p=Pattern.compile("[a-zA-Z0-9-$.]+[.]txt");
File f=new File("E:\\scjp");
String[] s=f.list();
for(String s1:s)
{
Matcher m=p.matcher(s1);
if(m.find()&&m.group().equals(s1))
{
count++;
System.out.println(s1);
}
}
System.out.println(count);
}
}
Output:
input.txt
output.txt
outut.txt
3
Write a program to check whether the given mailid is valid or not.
Write a regular expressions to represent all Java language identifiers :
Write a regular expressions to represent all names starts with 'a'
To represent all names starts with 'A' ends with 'K' |