java find()始终返回true
我试图在java中的字符串中找到一种模式。下面是编写为的代码-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
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));