正则表达式
正则表达式简介:
概述:
就是正确的符合特定规则的表达式, 本质就是一个字符串, 一般是用来 校验或者匹配某些信息的.
正则不独属于任何的语言, 目前市场上大多数的语言都兼容它.
涉及到的成员方法:
String类中的方法:
public boolean matches(String regex); 判断字符串是否符合指定的(正则)格式, 符合: true, 不符合: false
public String replaceAll(String regex, String newStr); 把符合正则规则的内容 用指定的字符串(newStr)来替代.
....
正则规则:
a 就表示一个特殊的字符a
. 表示任意的一个字符
\. 表示一个普通的. 没有任何特殊含义.
[abc] 表示必须是a,b,c这三个字符中的任意一个字符
[^abc] 表示不是a,b,c这三个字符中的任意一个字符
[a-zA-Z] 表示这里必须是一个任意的字母.
[0-9] 表示这里必须是一个数字
[a-zA-Z_0-9] 表示这里必须是数字, 字母或者是_, 它们统称为: 单词字符.
\w 表示任意的一个单词字符, 等价于: [a-zA-Z_0-9]
\d 表示任意的一个数字, 等价于: [0-9]
^ 表示正则的开头
$ 表示正则的结尾
x{n} 表示x字符恰好出现n次, 多一次少一次都不行.
x{n,} 表示x字符至少出现n次, 至多无所谓
x{n,m} 表示x字符至少出现n次, 至多出现m次, 左右都包.
x? 表示x字符至少出现0次, 至多出现1次
x* 表示x字符至少出现0次, 至多出现无数次
x+ 表示x字符至少出现1次, 至多出现无数次
细节:
1. 更多正则表达式的规则详见 Pattern类.
2. 能用以上的规则, 看懂别人写的正则表达式即可.
public class Demo01 {
public static void main(String[] args) {
//需求1: 判断字符串是否以 abc任意一个字母开头.
String s1 = "dyz";
System.out.println(s1.matches("^[abc].*"));
//需求2: 判断字符串是否以 数字结尾.
String s2 = "abc0ab";
System.out.println(s2.matches(".*[0-9]$"));
System.out.println(s2.matches(".*\\d$"));
//需求3: 判断字符串是否 有出现连续的3个字母
String s3 = "ab1bcde2cd";
System.out.println(s3.matches(".*[a-zA-Z]{3,}.*"));
//需求4: 判断字符串是否是合法的手机号.
/*
手机号规则:
1. 长度必须是11.
2. 必须是纯数字.
3. 首位数字必须是1
4. 第2位数字必须是: 3,4,5,6,7,8,9
*/
String phone = "11112345678";
System.out.println(phone.matches("1[3-9]\\d{9}"));
//需求5: 统计字符串中所有数字之和.
String s5 = "a1b23cde521fg31efab6a3";
String s6 = s5.replaceAll("[^\\d]+", " ").trim();
// System.out.println(s);
String[] arr = s6.split(" ");
int num = 0;
for (String s : arr) {
if (!"".equals(s)) {
// System.out.println(s);
num += Integer.parseInt(s);
}
}
System.out.println(num);
}
}