一、正则表达式是用来做什么的?
答:
正则表达式是用来处理字符串的,可以用一些特定字符来描述字符串里字符出现的规则,从而匹配,提取或者替换符合某一个规则的字符串
二、说出\d,\w,\s,.,[1234],[^a-f],{},?,+,*,\b 规则的含义?
答:
\d :数字:[0-9];
\w:单词字符:[a-zA-Z_0-9];
\s:空白字符:[ \t\n\x0B\f\r];空格、水平制表符、换行、垂直制表符、换页、回车等。
. :任何字符
[1234]:字符串长度为 1,值为 1、2、3、4 中的一个数字;
[^a-f] :字符串长度为 1,值为除了 a-f 的其它字符
{}:匹配长度,如 \s{3} 表示匹配三个空白字符;
?:它前面相邻的字符重复 0 或 1 次;
+:它前面相邻的字符重复 1 到多次;
*:它前面相邻的字符重复 0 到多次;
\b:单词边界。匹配的是一个位置而不是字符,这个位置的一侧是构成单词的字符,另一侧是非单词字符、字符串的开始或结束位置。
三、\D,\d 分别表示什么意思?
答:
\d:数字[0-9];
\D:非数字[^0-9];
四、【编程题】完成手机号码的表达式?
答:
public static void main(String[] args) {
Pattern compile = Pattern.compile("0?(13|14|15|18|17)[0-9]{9}");
Matcher matcher = compile.matcher("18763324814");
if(matcher.matches()){
System.out.println("当前手机号正确");
}
五、group(),group(1),group(2)的区别。
答:
group(int index)的参数和所匹配正则表达式的分组有关。Index 就是正则表达式中组的编号(第几组)
1、group()和 group(0)都是指的整个串
2、group(1)指的是第一组的内容
3、group(2)指的第二组的内容。
public static void main(String[] args) {
String str = "Hello,World";
Pattern pattern = Pattern.compile("(or)(ld)");
Matcher matcher = pattern.matcher(str);
while(matcher.find()){
System.out.println("所有"+matcher.group(0));
System.out.println("得到第一组"+matcher.group(1));
System.out.println("得到第二组"+matcher.group(2));
}}