Java Regex
The Java Regex or Regular Expression is an API to define pattern for searching or
manipulating strings.
It is widely used to define constraint on strings such as password and email
validation. After learning java regex tutorial, you will be able to test your own regular
expressions by the Java Regex Tester Tool.
Java Regex API provides 1 interface and 3 classes in java.util.regex package.
java.util.regex package
It provides following classes and interface for regular expressions. The Matcher and
Pattern classes are widely used in java regular expression.
1. MatchResult interface
2. Matcher class
3. Pattern class
4. PatternSyntaxException class
Matcher class
It implements MatchResult interface. It is a regex engine i.e. used to perform match
operations on a character sequence.
No. Method
1
Description
boolean
test whether the regular expression matches the
matches()
pattern.
boolean find()
finds the next expression that matches the pattern.
boolean find(int
finds the next expression that matches the pattern from
start)
the given start number.
Pattern class
It is the compiled version of a regular expression. It is used to define a pattern for the
regex engine.
No. Method
1
Description
static Pattern compile(String
compiles the given regex and return the
regex)
instance of pattern.
Matcher
creates a matcher that matches the given
matcher(CharSequence input)
input with pattern.
static boolean matches(String
It works as the combination of compile and
regex, CharSequence input)
matcher methods. It compiles the regular
expression and matches the given input
with the pattern.
String[] split(CharSequence
splits the given input string around
input)
matches of given pattern.
String pattern()
returns the regex pattern.
Example of Java Regular Expressions
There are three ways to write the regex example in java.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
copy to clipboard
import java.util.regex.*;
public class RegexExample1{
public static void main(String args[]){
//1st way
Pattern p = Pattern.compile(".s");//. represents single character
Matcher m = p.matcher("as");
boolean b = m.matches();
//2nd way
boolean b2=Pattern.compile(".s").matcher("as").matches();
//3rd way
boolean b3 = Pattern.matches(".s", "as");
System.out.println(b+" "+b2+" "+b3);
}}
import java.util.regex.*;
public class RegexExample1{
public static void main(String arg
//1st w ay
Pattern p = Pattern.compile(".s")
Test it Now
Output
true true true
Regular Expression . Example
The . (dot) represents a single character.
copy to clipboard
import java.util.regex.*;
class RegexExample2{
public static void main(String args[]){
System.out.println(Pattern.matches(".s", "as"));//true (2nd char is s)
System.out.println(Pattern.matches(".s", "mk"));//false (2nd char is not s)
System.out.println(Pattern.matches(".s", "mst"));//false (has more than 2 char)
System.out.println(Pattern.matches(".s", "amms"));//false (has more than 2 char
)
8.
System.out.println(Pattern.matches("..s", "mas"));//true (3rd char is s)
9.
}}
1.
2.
3.
4.
5.
6.
7.
import java.util.regex.*;
class RegexExample2{
public static void main(String arg
System.out.println(Pattern.match
System.out.println(Pattern.match
Test it Now
Regex Character classes
No. Character Class
Description
[abc]
a, b, or c (simple class)
[^abc]
Any character except a, b, or c (negation)
[a-zA-Z]
a through z or A through Z, inclusive (range)
[a-d[m-p]]
a through d, or m through p: [a-dm-p] (union)
[a-z&&[def]]
d, e, or f (intersection)
[a-z&&[^bc]]
a through z, except for b and c: [ad-z] (subtraction)
[a-z&&[^m-p]]
a through z, and not m through p: [a-lq-z](subtraction)
Regular Expression Character classes Example
copy to clipboard
import java.util.regex.*;
class RegexExample3{
public static void main(String args[]){
System.out.println(Pattern.matches("[amn]", "abcd"));//false (not a or m or n)
System.out.println(Pattern.matches("[amn]", "a"));//true (among a or m or n)
System.out.println(Pattern.matches("[amn]", "ammmna"));//false (m and a come
s more than once)
7.
}}
1.
2.
3.
4.
5.
6.
import java.util.regex.*;
class RegexExample3{
public static void main(String arg
System.out.println(Pattern.match
System.out.println(Pattern.match
Test it Now
Regex Quantifiers
The quantifiers specify the number of occurrences of a character.
Regex
Description
X?
X occurs once or not at all
X+
X occurs once or more times
X*
X occurs zero or more times
X{n}
X occurs n times only
X{n,}
X occurs n or more times
X{y,z}
X occurs at least y times but less than z times
Regular Expression Character classes and
Quantifiers Example
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
copy to clipboard
import java.util.regex.*;
class RegexExample4{
public static void main(String args[]){
System.out.println("? quantifier ....");
System.out.println(Pattern.matches("[amn]?",
e time)
System.out.println(Pattern.matches("[amn]?",
n one time)
System.out.println(Pattern.matches("[amn]?",
omes more than one time)
System.out.println(Pattern.matches("[amn]?",
han one time)
System.out.println(Pattern.matches("[amn]?",
ome one time)
"a"));//true (a or m or n comes on
"aaa"));//false (a comes more tha
"aammmnn"));//false (a m and n c
"aazzta"));//false (a comes more t
"am"));//false (a or m or n must c
System.out.println("+ quantifier ....");
System.out.println(Pattern.matches("[amn]+", "a"));//true (a or m or n once or
more times)
13.
System.out.println(Pattern.matches("[amn]+", "aaa"));//true (a comes more tha
n one time)
14.
System.out.println(Pattern.matches("[amn]+", "aammmnn"));//true (a or m or n
comes more than once)
15.
System.out.println(Pattern.matches("[amn]+", "aazzta"));//false (z and t are not
matching pattern)
16.
17.
System.out.println("* quantifier ....");
18.
System.out.println(Pattern.matches("[amn]*", "ammmna"));//true (a or m or n
may come zero or more times)
19.
20.
}}
import java.util.regex.*;
class RegexExample4{
public static void main(String arg
System.out.println("? quantifier
System.out.println(Pattern.match
Test it Now
Regex Metacharacters
The regular expression metacharacters work as a short codes.
Regex
Description
Any character (may or may not match terminator)
\d
Any digits, short of [0-9]
\D
Any non-digit, short for [^0-9]
\s
Any whitespace character, short for [\t\n\x0B\f\r]
\S
Any non-whitespace character, short for [^\s]
\w
Any word character, short for [a-zA-Z_0-9]
\W
Any non-word character, short for [^\w]
\b
A word boundary
\B
A non word boundary
Regular Expression Metacharacters Example
1.
2.
3.
4.
5.
6.
7.
8.
copy to clipboard
import java.util.regex.*;
class RegexExample5{
public static void main(String args[]){
System.out.println("metacharacters d....");\\d means digit
System.out.println(Pattern.matches("\\d", "abc"));//false (non-digit)
System.out.println(Pattern.matches("\\d", "1"));//true (digit and comes once)
System.out.println(Pattern.matches("\\d", "4443"));//false (digit but comes more
than once)
9.
System.out.println(Pattern.matches("\\d", "323abc"));//false (digit and char)
10.
11.
System.out.println("metacharacters D....");\\D means non-digit
12.
13.
System.out.println(Pattern.matches("\\D", "abc"));//false (non-digit but comes m
ore than once)
14.
System.out.println(Pattern.matches("\\D", "1"));//false (digit)
15.
System.out.println(Pattern.matches("\\D", "4443"));//false (digit)
16.
System.out.println(Pattern.matches("\\D", "323abc"));//false (digit and char)
17.
System.out.println(Pattern.matches("\\D", "m"));//true (non-digit and comes onc
e)
18.
19.
System.out.println("metacharacters D with quantifier....");
20.
System.out.println(Pattern.matches("\\D*", "mak"));//true (non-digit and may co
me 0 or more times)
21.
22.
}}
import java.util.regex.*;
class RegexExample5{
public static void main(String arg
System.out.println("metacharac
Test it Now
Regular Expression Question 1
1.
2.
3.
4.
5.
6.
7.
8.
copy to clipboard
/*Create a regular expression that accepts alpha numeric characters only. Its
length must be 6 characters long only.*/
import java.util.regex.*;
class RegexExample6{
public static void main(String args[]){
System.out.println(Pattern.matches("[a-zA-Z0-9]{6}",
System.out.println(Pattern.matches("[a-zA-Z0-9]{6}",
re than 6 char)
9.
System.out.println(Pattern.matches("[a-zA-Z0-9]{6}",
10.
System.out.println(Pattern.matches("[a-zA-Z0-9]{6}",
t matched)
11.
}}
"arun32"));//true
"kkvarun32"));//false (mo
"JA2Uk2"));//true
"arun$2"));//false ($ is no
/*Create a regular expression th
length must be 6 characters lon
import java.util.regex.*;
class RegexExample6{
Test it Now
Regular Expression Question 2
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
copy to clipboard
/*Create a regular expression that accepts 10 digit numeric characters
starting with 7, 8 or 9 only.*/
import java.util.regex.*;
class RegexExample7{
public static void main(String args[]){
System.out.println("by character classes and quantifiers ...");
System.out.println(Pattern.matches("[789]{1}[0-9]{9}", "9953038949"));//true
System.out.println(Pattern.matches("[789][0-9]{9}", "9953038949"));//true
System.out.println(Pattern.matches("[789][0-9]{9}", "99530389490"));//false (1
1 characters)
12.
System.out.println(Pattern.matches("[789][0-9]{9}", "6953038949"));//false (st
arts from 6)
13.
System.out.println(Pattern.matches("[789][0-9]{9}", "8853038949"));//true
14.
15.
System.out.println("by metacharacters ...");
16.
System.out.println(Pattern.matches("[789]{1}\\d{9}", "8853038949"));//true
17.
System.out.println(Pattern.matches("[789]{1}\\d{9}", "3853038949"));//false (s
tarts from 3)
18.
19.
}}