正则表达式30分钟入门系列之5
1、[^]:这个关键字匹配 圈定一个范围,只要不是这个范围内的字符都可以哦
^:这个关键字匹配 以哪个字符串开头
$:这个关键字匹配 以哪个字符串结束
先来看看测试的脚手架代码:
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("Hello7!", "Hello汉!", "Hello !", "Hello !", "Hello\b!", "Hello\t!", "Hello\"!" , "Hello\r!", "Hello\f!", "Hello\n!", "Hello_!", "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(String.format("%s is not match %s!", regexStr, input)); result = false; } return result; }}

2、简单分析一下上面的正则表达式,
“[^\\d]”就是\D哦
所以,除"Hello7!"不匹配外,其它的字符串都匹配
执行下看看结果
Output:
Hello[^\d]! is not match Hello7!!
false
与预期一致
Ok

3、修改一下正则表达式
匹配一下的字符串"Hello7!" 匹配刚才
Code:
String regexStr = "Hello[^\\D]!";
List<String> input = Arrays.asList("Hello7!");

4、执行下看看结果
Output:
true
与预期一致
OK

5、现在来看看^的用法
更改下代码
Code:
String regexStr = "^[\\d]Hello!";
List<String> input = Arrays.asList("7Hello!","xHello!");

6、解析一下代码:
"^[\\d]Hello!":表示必须以数字打头,后面是“Hello!”的字符串
因此不能匹配"xHello!"
执行下看看结果
^[\d]Hello! is not match xHello!!
false
与预期一致
OK

7、最后来看看$的用法
更改下代码
Code:
String regexStr = "Hello![\\d]$";
List<String> input = Arrays.asList("Hello!7","Hello!x");

8、解析一下代码:
"^[\\d]Hello!":表示必须数字结尾,前面是“Hello!”的字符串
因此不能匹配"Hello!x"
执行下看看结果
Hello![\d]$ is not match Hello!x!
false
与预期一致
OK
