java中的正则表达式奇怪的地方

图片说明
图片说明
这是什么情况,为什么java中是错误的

String.machers(regex)是整个字符串匹配

为什么是false而不是true

你用Boolean接受,然后输出Boolean类型,不是true就是false。没问题啊?

多看看别人的例子public static void main(String[] args) {
// 要验证的字符串
String str = "service@xsoftlab.net";
// 邮箱验证规则
String regEx = "[a-zA-Z_]{1,}[0-9]{0,}@(([a-zA-z0-9]-*){1,}\.){1,3}[a-zA-z\-]{1,}";
// 编译正则表达式
Pattern pattern = Pattern.compile(regEx);
// 忽略大小写的写法
// Pattern pat = Pattern.compile(regEx, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(str);
// 字符串是否与正则表达式相匹配
boolean rs = matcher.matches();
System.out.println(rs);
}

因为你用的match要全部匹配,用search

我说的你不知道能不能理解,你工具匹配,是给定一个字符串,将匹配的子字符串从给定的字符串抽取并显式。
而java你看到matches返回值是boolean而不是一个字符串数组,这个方法的含义是:给定的字符串是否匹配给定的正则(完全匹配),而不是给定的字符串是否有
给定正则的子匹配