正则表达式30分钟入门教程1
1、正则表达式也是一门语言。
在学习下这门语言的语法之前,先来看看测试的脚手架代码:
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.*!";
List<String> input = Arrays.asList("Hello everyone!", "Hello body!", "Hello kitty!");
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
为了方便大家理解,我简单介绍下上面用到的API:
Pattern pattern = Pattern.compile(regexStr);//解析输入的正则表达式
Matcher matcher = pattern.matcher(input);//让正则表达式与待匹配字符串发生联系
if (matcher.matches()) {//matches()方法返回的是boolean的值。true表示匹配
continue;
}
3、来分析下上例中用到的正则表达式中的关键字(也有人叫元组metacharacter)
:
.(英文句点):匹配除了换行符以外的任意字符
*:表示紧挨的前面的字符连续重复零次或更多次以使整个表达式得到匹配
*代表的不是字符,也不是位置,而是数量。
扩展:
.*连在一起就表示会匹配任意多的不包括换行的字符
我们来改下代码,在Hello和!之间增加一个换行符,看看能不能匹配成功
Code:
List<String> input = Arrays.asList("Hello everyone!", "Hello body!", "Hello kitty!", "Hello \n line feed !");
4、看看执行结果
果然返回false
Output:
Hello
line feed ! is not match!
false
5、汉字比较特殊,换个汉字行不行呢?
更改代码:
Code:
List<String> input = Arrays.asList("Hello everyone!", "Hello body!", "Hello kitty!", "Hello 汉字 !");
6、看看执行结果是否是true
果然是
OK
正则表达式的这两个关键字就介绍完了