Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中实现Regex_Java_Regex - Fatal编程技术网

如何在Java中实现Regex

如何在Java中实现Regex,java,regex,Java,Regex,我对一个我必须用Java解决的问题有疑问。问题是:我的程序通过控制台接收两个参数,第一个是文件路径,我必须将这个文件加载到java程序,它是一个.ini文件。第二个参数是一个代码,具有以下模式:XXX-XXXX或XXX-XXXX-XXXX,其中“X”是从0到9的数字。在第二个参数中,我的问题来了:我必须使用数据包java.util.regex来实现这个模式,我的意思是,我必须验证用户是否正确输入了参数。我该怎么做? 我的代码中实现这一点的部分如下,请提前感谢: Pattern patron =

我对一个我必须用Java解决的问题有疑问。问题是:我的程序通过控制台接收两个参数,第一个是文件路径,我必须将这个文件加载到java程序,它是一个.ini文件。第二个参数是一个代码,具有以下模式:XXX-XXXX或XXX-XXXX-XXXX,其中“X”是从0到9的数字。在第二个参数中,我的问题来了:我必须使用数据包java.util.regex来实现这个模式,我的意思是,我必须验证用户是否正确输入了参数。我该怎么做? 我的代码中实现这一点的部分如下,请提前感谢:

Pattern patron = Pattern.compile("^[0-9]{3,}"); //aqui va la regex que queremos poner
    Matcher match = patron1.matcher(args[1]);


    if(args.length < 2){ // el programa espera recibir dos argumentos

        System.out.println("ERROR, número de argumentos inválido!");
        System.exit(1); //termina el programa
    } else if(args[0].endsWith("config.ini") == false){ //COMPLETAR la segunda condicion
        System.out.println("ERROR, los argumentos no toman valores válidos");
        System.exit(1);
    }

您可以使用以下内容:

ifargs.length>=2&&args[1]!=null&&args[1]。匹配^\\d{3,}\\-\\d{3,}{1,2}$

^代表字符串的开头

\\d{3,}重复3次或以上的数字

\\-\\d{3,}一个由破折号和上面解释的结构组成的群

{1,2}表示在一到两次之间重复的组


$字符串的结尾

请您给我解释一下您使用的正则表达式好吗?谢谢lot@user71209我编辑了我的答案,试图解释正则表达式。你可以找到一个更好的解释!唯一的疑问是为什么要用双反斜杠,因为我们在Java中?我的意思是,在regex101页面中,它只需要一个反斜杠,例如:\d{3}->一个三位数number@user71209是的,其他语言有regex文本,您只能使用一个斜杠,但在Java中,因为我们使用的是字符串文本,所以必须转义斜杠。