java - 正则表达式仅匹配第一次出现的情况

标签 java regex

有效电子邮件格式:word_character@word_character.word_character..

我尝试使用 (\b\w+\b@\b\w+\b\.\b\w+\b) 正则表达式,但它只匹配第一个:

代码:

public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int t = in.nextInt();
        Pattern p = Pattern.compile("(\b\w+\b@\b\w+\b\.\b\w+\b)");
        String s= "";
        while (t-- > 0) {
            s += in.next();
        }
        Matcher m = p.matcher(s);
        int count = 0;
        while (m.find()) {
            count++;
        }
        System.out.println(count);
    }

输入:

1

a1@gmail.com b1@gmail.com c1@gmail.com

Output: 1

Expected output: 3

最佳答案

您没有添加空格来分隔电子邮件。

按如下方式进行:

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        System.out.print("How many emails do you want to enter?: ");
        int t = in.nextInt();
        Pattern p = Pattern.compile("(\\b\\w+@\\w+\\.\\w+\\b)");
        String s = "";
        while (t-- > 0) {
            s += in.next() + " "; // Add space here
        }
        Matcher m = p.matcher(s);
        int count = 0;
        while (m.find()) {
            count++;
        }
        System.out.println(count);
    }
}

示例运行:

How many emails do you want to enter?: 3
a1@gmail.com b1@gmail.com c1@gmail.com
3

关于java - 正则表达式仅匹配第一次出现的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61172859/

相关文章:

java - 屏幕分辨率java代码

java - 在java中使用串行端口进行设备通信

java - 请帮助,FileNotFoundException 等问题

c# - 使用大文档时运行正则表达式非常慢

javascript - 防止字符串中出现特殊字符

php - 使用 php 和 javascript 匹配字符串中最后一个整数的正则表达式

java - 实现Java API示例代码

java - Spring独立应用程序的全局错误处理

xml - XSLT 从 xml 文件中的所有 url 中删除查询字符串

java - 是否可以创建一个正则表达式来查找与模式不匹配的字符串?