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.

Java Regex Pattern as Pradicate

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("[email protected]", "[email protected]", 
							"[email protected]", "[email protected]");

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

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

Output:

[email protected]
[email protected]

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("[email protected]", "[email protected]", 
						"[email protected]", "[email protected]");
	 
	for(String email : emails)
	{
	    Matcher matcher = pattern.matcher(email);
	    
	    if(matcher.matches()) 
	    {
	    	System.out.println(email);
	    }
	}
}

Output:

[email protected]
[email protected]

Drop me your questions in comments section.

Happy Learning !!

Weekly Newsletter

Stay Up-to-Date with Our Weekly Updates. Right into Your Inbox.

Comments

Subscribe
Notify of
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.