我试图在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。我出错的任何输入或想法。?
答案 0 :(得分:10)
?
使整个字符组可选。所以你的正则表达式基本上意味着“找到任何字符 * ......或不是”。而“或不”部分意味着它匹配空字符串。
*不是真的“任何”,只是用ASCII表示的那些字符。
答案 1 :(得分:8)
[A-Za-z]?
表示“零或一个字母”。它总是匹配字符串中的某个地方;即使没有任何字母,它也会匹配零。
答案 2 :(得分:1)
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));