JAVA8系列教程-使用Pattern.compile()方法时,正则表达式作为谓词
温馨提示:
本文最后更新于 2022年07月14日,已超过 861 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
将正则表达式转换为谓词
我有不同域的电子邮件列表,我只想对域名为“ example.com”的电子邮件ID执行某些操作。
现在使用Pattern.compile().asPredicate()
method 从编译的正则表达式获取谓词。该谓词可与lambda流一起使用,以将其应用于每个令牌中。
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);
}
}
输出:
alex@example.com david@example.com
使用Pattern.matcher()使用正则表达式
如果要使用旧的Pattern.matcher(),请使用下面的代码模板。
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);
}
}
}
输出:
alex@example.com david@example.com
正文到此结束
- 本文标签: 其他
- 本文链接: https://www.v8en.com/article/258
- 版权声明: 本文由SIMON原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权