Java Regex as Predicate using Pattern.compile() Method

Learn to compile regular expression into java.util.function.Predicate. This can be useful when you want to perform some operation on matched tokens.

Convert Regex to Predicate

I have list of emails with different domain and I want to perform some operation only on email ids with domain name “example.com”.

Now use Pattern.compile().asPredicate() method to get a predicate from compiled regular expression. This predicate can be used with lambda streams to apply it on each token into stream.

import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;
import java.util.regex.Pattern;
import java.util.stream.Collectors;

public class RegexPredicateExample {
	public static void main(String[] args) {
		// Compile regex as predicate
		Predicate<String> emailFilter = Pattern
										.compile("^(.+)@example.com$")
										.asPredicate();

		// Input list
		List<String> emails = Arrays.asList("alex@example.com", "bob@yahoo.com", 
							"cat@google.com", "david@example.com");

		// Apply predicate filter
		List<String> desiredEmails = emails
									.stream()
									.filter(emailFilter)
									.collect(Collectors.<String>toList());

		// Now perform desired operation
		desiredEmails.forEach(System.out::println);
	}
}

Output:

alex@example.com
david@example.com

Using Regex using Pattern.matcher()

If you want to use good old Pattern.matcher(), then use below code template.

public static void main(String[] args) 
{
	
	Pattern pattern = Pattern.compile("^(.+)@example.com$");
	
	// Input list
	List<String> emails = Arrays.asList("alex@example.com", "bob@yahoo.com", 
						"cat@google.com", "david@example.com");
	 
	for(String email : emails)
	{
	    Matcher matcher = pattern.matcher(email);
	    
	    if(matcher.matches()) 
	    {
	    	System.out.println(email);
	    }
	}
}

Output:

alex@example.com
david@example.com

Drop me your questions in comments section.

Happy Learning !!

Leave a Reply

1 Comment
Most Voted
Newest Oldest
Inline Feedbacks
View all comments

About Us

HowToDoInJava provides tutorials and how-to guides on Java and related technologies.

It also shares the best practices, algorithms & solutions, and frequently asked interview questions.