正则表达式30分钟入门系列之2
1、\w:这个关键字代表 一个字母、数字或下划线
先来看看测试的脚手架代码:
Code:
package chapter4;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Created by MyWorld on 2016/3/23.
*/
public class RegexStudyDemo {
public static void main(String[] args) {
String regexStr = "Hello\\w!";
List<String> input = Arrays.asList("Hello了!", "Hello3!", "HelloY!", "Hello_!");
System.out.println(isMatch(input, regexStr));
} private static boolean isMatch(List<String> inputs, String regexStr) {
boolean result = true;
for (String input : inputs) {
Pattern pattern = Pattern.compile(regexStr);
Matcher matcher = pattern.matcher(input);
if (matcher.matches()) {
continue;
}
System.out.println(input + " is not match!");
result = false;
}
return result;
}
}

2、执行下看看结果:
Hello了! is not match!
false
java代码就不再介绍了。前面的一篇有
说下“\\w”,不是说好 的"\w",怎么你的代码中变成这两个反斜杠了
先息怒:
\在Java中是保留字符,是转义用的。转义转义,就是把以前的意思改变了
\w中前面就是一个普通的反斜杠,在java中要表达这个意思,就要输入两个\\,其它第一斜杠,是java中的转义符,第二个斜杠是要使用的字符,就是\w前面的这个斜杠了

3、不少眼尖的tx已经发现了,上面的代码执行时,返回false
是因为
“Hello\\w!”不能匹配“Hello了!”
即\w不能匹配汉字
童话里都是骗人的,不是说好的,可以匹配汉字的吗。。。

4、下划线和中划线比较像,试试
更改下代码
Code:
List<String> input = Arrays.asList("Hello-!", "Hello3!", "HelloY!", "Hello_!");

5、执行下看看是否匹配
Output:
Hello-! is not match!
false
与预期一致。
OK

6、试试两个字符和空格,看看行不行
更改代码
Code:
List<String> input = Arrays.asList("Hello33!", "Hello !", "HelloY!", "Hello_!");

7、执行下看看结果是不是不匹配
Output:
Hello33! is not match!
Hello ! is not match!
false
与预期一致
OK
