Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.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 find()始终返回true_Java_Regex - Fatal编程技术网

java find()始终返回true

java find()始终返回true,java,regex,Java,Regex,我试图在java中的字符串中找到一种模式。下面是编写为的代码- String line = "10011011001;0110,1001,1001,0,10,11"; String regex ="[A-Za-z]?"; //[A-Za-z2-9\W]? //create a pattern obj Pattern p = Pattern.compile(regex); Matcher m = p.matcher(line); boolean a = m.find(); Syst

我试图在java中的字符串中找到一种模式。下面是编写为的代码-

 String line = "10011011001;0110,1001,1001,0,10,11";

 String regex ="[A-Za-z]?"; //[A-Za-z2-9\W]?
 //create a pattern obj
 Pattern p = Pattern.compile(regex);
 Matcher m = p.matcher(line);
 boolean a = m.find();
 System.out.println("The value of a is::"+a +" asdsd "+m.group(0));
我期望布尔值为false,但它总是返回true。我哪里出错了,有什么意见吗?

[A-Za-z]?表示零个或一个字母。它将始终匹配字符串中的某个位置;即使没有任何字母,它也会匹配其中的零个。

[A-Za-z]?表示零个或一个字母。它将始终匹配字符串中的某个位置;即使没有任何字母,它也会匹配其中的零个。

?使整个角色组成为可选的。所以你的正则表达式本质上意味着找到任何字符*。。。或者不是。而or not部分表示它与空字符串匹配

*实际上没有,只是那些用ASCII表示的字符。

?使整个角色组成为可选的。所以你的正则表达式本质上意味着找到任何字符*。。。或者不是。而or not部分表示它与空字符串匹配


*实际上没有,只是那些用ASCII表示的字符。

i tihnk?指零个或多个前一个字符?如答案中所述:您应用了?量词,表示前一个原子的零或1;因此,正则表达式总是匹配的。理论上它可以通过一个无限循环,但事实并非如此,因为Java的正则表达式引擎足够聪明,如果正则表达式匹配的是空字符串,它可以右移1?指零个或多个前一个字符?如答案中所述:您应用了?量词,表示前一个原子的零或1;因此,正则表达式总是匹配的。理论上它可以通过一个无限循环,但事实并非如此,因为Java的正则表达式引擎足够聪明,如果正则表达式匹配的是空字符串,它可以右移1。*只有ASCII中的字母*只有ASCIIOP中的字母希望验证字符串是二进制的,这将允许任何digitsOP希望验证字符串是二进制的,这将允许任何数字
 The below regex should work;
[A-Za-z]?-----> once or not at all
 Reference :
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/regex/Pattern.html


    String line = "10011011001;0110,1001,1001,0,10,11";

     String regex ="[A-Za-z]";// to find letter
     String regex ="[A-Za-z]+$";// to find last string..
     String regex ="[^0-9,;]";//means non digits and , ;


     //create a pattern obj
     Pattern p = Pattern.compile(regex);
     Matcher m = p.matcher(line);
     boolean a = m.find();
     System.out.println("The value of a is::"+a +" asdsd "+m.group(0));