gpt4 book ai didi

java 匹配器不处理 ^ 和 $ 符号

转载 作者:行者123 更新时间:2023-11-30 04:14:54 25 4
gpt4 key购买 nike

有电子邮件模式:

^[a-zA-Z0-9][\w.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w.-]*[ a-zA-Z0-9]\.[a-zA-Z][a-zA-Z.]*[a-zA-Z]$

以及尝试从字符串获取电子邮件的示例代码:

String email = "NAME <firstname_lastname@domain.com>";

Pattern pattern = Pattern.compile(EMAIL_PATTERN);
Matcher matcher = pattern.matcher(email);

if (matcher.find()) {
System.out.println(matcher.group());
}

当 regexp 包含 ^$ 字符时,matcher.find() 返回 false,但是当 regexp 不包含这些字符时,全部为很好:我在控制台中看到 firstname_lastname@domain.com

您能解释一下带和不带 ^$ 的正则表达式之间的区别吗?

如何强制匹配器使用包含 ^$ 的正则表达式?

最佳答案

^ & $ 匹配字符串的开头和结尾(如果打开了多行开关,则匹配行或全文)。如果您需要从文本中提取电子邮件,您可以从模式中修剪它们。

    String EMAIL_PATTERN = "^[a-zA-Z0-9][\\w.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\\w.-]*[a-zA-Z0-9]\\.[a-zA-Z][a-zA-Z.]*[a-zA-Z]$";
String email = "NAME <firstname_lastname@domain.com>";
Pattern pattern = Pattern.compile(EMAIL_PATTERN.substring(1, EMAIL_PATTERN.length()-1));
Matcher matcher = pattern.matcher(email);

if (matcher.find()) {
System.out.println(matcher.group());
}

输出

firstname_lastname@domain.com

关于java 匹配器不处理 ^ 和 $ 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18653464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com