正则表达式
正则表达式:
正则表达式(Regular Expression)本身也是一个字符串,是==由普通字 符及元字符组成==的模式字符串,它用来==定义别的字符串的组成规则==。
String类中的 boolean matches(String regex)方法可以用来判断当前字符串是否和参数regex指定的正则表达式匹配。
元字符:
==. 匹配任意单个字符==
==[] 用来给出取值集合,匹配其中某一个字符==
【示例】te[sx]t
在[]中使用-表示范围,如 [0-9] [A-Za-z0-9]等
()用来界定子表达式,匹配其中的有序序列
元字符|表示或的关系
元字符{n}表示前面的元素的重复n次;{2,5}表示前面的元素重复2到5次; {3,}表示至少重复3次
对于重复次数的限制,还可使用下列特殊元字符: ==* 表示前面的元素重复0次或多次== ==? 表示前面的元素重复0次或1次== ==+ 表示前面的元素重复1次或多次==
转义字符\
元字符^和$, ==^代表字符串开始==,==$代表字符串结束==
在==[]中使用^表示非==。模式字符串是‘B【^lmn 】’,则表示B后跟的字符不能是l,m,n三者之一。
其它简洁符号 ==\d == [0-9]== ==\D == 【^0-9】== ==\w == 字母数字下划线== ==\W == 非字母数字下划线== ==\s 所有的空白字符== ==\S非空白字符==
判断正则表达式规则是否符合
Pattern 类:
pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。
Matcher 类:
Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。
PatternSyntaxException:
PatternSyntaxException 是一个非强制异常类,它表示一个正则表达式模式中的语法错误。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
String s = "a";
String pat = "\\w"; Pattern pattern = Pattern.compile(pat); Matcher matcher = pattern.matcher(s); matcher.matches();
String s = "a"; String regex = "\\w"; s.matches(regex);
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
| import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern;
public class Demo01 { public static void main(String[] args) {
test01();
test02();
test03();
test04();
test05();
test06();
}
private static void test06() { String stu = "姓名:张三,手机号码:13956484587,15896547895,13745869587"; String pat = "1\\d{10}"; Pattern pattern = Pattern.compile(pat); Matcher matcher = pattern.matcher(stu);
System.out.println(); while(matcher.find()){ System.out.println(matcher.group()); } }
private static void test05() { String stu = "191203,张三,20,男,15188569453,dhdhdhdhkkf@163.com";
String patPhone = "1\\d{10}"; String patEmail = "\\w+@163.com";
Pattern pattern = Pattern.compile(patPhone); Matcher matcher = pattern.matcher(stu);
System.out.println(matcher.find()); System.out.println(matcher.group());
Pattern pattern2 = Pattern.compile(patEmail); Matcher matcher2 = pattern2.matcher(stu);
System.out.println(matcher2.find()); System.out.println(matcher2.group()); }
private static void test04() { String str1 = "A"; String str2 = "a";
String pat1 = "[a-z]"; String pat2 = "[A-Z]";
Pattern pattern1 = Pattern.compile(pat1); Pattern pattern2 = Pattern.compile(pat2);
Matcher matcher1 = pattern1.matcher(str1); Matcher matcher2 = pattern1.matcher(str2); Matcher matcher3 = pattern2.matcher(str1); Matcher matcher4 = pattern2.matcher(str2);
System.out.println(matcher1.matches()?"A是[a-z]":"A不是[a-z]"); System.out.println(matcher2.matches()?"a是[a-z]":"a不是[a-z]"); System.out.println(matcher3.matches()?"A是[A-Z]":"A不是[A-Z]"); System.out.println(matcher4.matches()?"a是[A-Z]":"a不是[A-Z]"); }
private static void test03() { String s = " ";
String pat = "\\s";
Pattern pattern = Pattern.compile(pat);
Matcher matcher = pattern.matcher(s);
System.out.println(matcher.matches()); }
private static void test01() { String s = "15891771111";
String pat = "1\\d{18}";
Pattern pattern = Pattern.compile(pat);
Matcher matcher = pattern.matcher(s);
System.out.println(matcher.matches()); }
private static void test02() { String s = "a";
String pat = "\\w"; Pattern pattern = Pattern.compile(pat); Matcher matcher = pattern.matcher(s);
System.out.println(matcher.matches()); } }
|
练习:判断输入手机号码是否正确
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| private static void text01() { Scanner scanner = new Scanner(System.in);
boolean isflag = true;
while(isflag){ System.out.println("请输入手机号码:"); String phone = scanner.nextLine();
String pat = "(13[0-9]|15[012356789]|18[056789])\\d{8}";
if (phone.matches(pat)){ System.out.println("号码是:"); System.out.println(phone); isflag = false; }else{ System.out.println("输入格式错误,请重新输入!!!"); } } }
|