正则表达式30分钟入门系列之4
1、\d:这个关键字匹配 任意的一位数字,只是一位哦
\D:这个关键字匹配 任意非数字的字符。汉字、换行、制表符、下划线、空格都算哦
先来看看测试的脚手架代码:
Code:
package chapter4;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexStudyDemo {
public static void main(String[] args) { String regexStr = "Hello\\d!";
List<String> input = Arrays.asList("Hello1!", "Hello0!");
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、执行下看看结果。
true
OK
要是两位数字呢?

3、更改下代码
Code:
List<String> input = Arrays.asList("Hello1!", "Hello2!", "Hello23!");
。。。
System.out.println(String.format("%s is not match %s!", regexStr, input));
执行下看看结果。
Output:
Hello\d! is not match Hello23!!
false
与预期一致
OK

4、来看看\D,这个除数字,其它的任意字符都可以,
汉字、空格、\b、\t、\r、\f、\n、下划线什么的都ok了
改下代码
Code:
String regexStr = "Hello\\D!";
List<String> input = Arrays.asList("Hello汉!", "Hello !", "Hello !",
"Hello\b!", "Hello\t!", "Hello\"!"
, "Hello\r!", "Hello\f!", "Hello\n!",
"Hello_!", "Hello-!");

5、执行下看看结果
Output:
true
好强大啊。除不能匹配数字,什么都样的字符都可以啊

6、细心的同学是不是已经发现\d和\D加组合起来, 是不是可以匹配任意组合了
是的
就是这样的
更改下代码
Code:
String regexStr = "Hello[\\D\\d]!";
List<String> input = Arrays.asList("Hello7!", "Hello汉!", "Hello !", "Hello !",

7、细心的tx已经发现,更改的一的代码中使用英文中括号。
英文中括号也是正则表达式的保留字符,就是圈定一个范围,这个范围内的字符之间是或的关系
“[\\D\\d]”,这个中括号中圈定了两类字符 \D和\d,只要是任意一类就可以,在此处表示任意字条
因此,更改后的代码,执行后的返回值应该为true,表示全部匹配
执行下看看结果
Output:
true
与预期一致
OK
