---------------------- android培训 、java培训 、期待与您交流! ----------------------
正则表达式: 符合一定规则的表达式。用一些特定的符号来表示一些代码操作。
用于专门操作字符串。可以简化对字符串的复杂操作。不过阅读性很差
正则表达式功能
1 String的matches()方法,用于给指定的字符串设定要判断的规则
//判断电话号码 必须1开头,第二位只能是3 5 8 ,供11位,且必须是数字
String tel = "13632607600";
String telma = "1[358]\\d{9}";//创建规则
boolean b = tel.matches(telma);//给tel指定规则,符合则返回true
2 切割
split(String regex, int limit) 根据匹配给定的正则表达式来拆分此字符串。
String reg=" +"; //按照多个空格进行切割
String reg="用.进行切割
String reg="\\\\";//用\\进行切割
String reg="(.)\\1+";//按照叠词(2个或2个以上相同的字符)进行切割
3 替换
replaceAll(String regex, String replacement) ;使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
replaceAll(String,"\\d{5,}","#"); 将连续5个或5个以上的数字替换成#
replaceAll(String,"(.)\\1+","#"); 将叠词替换成#
replaceAll(String,"(.)\\1+","$1"); 将叠词替换成一个字符
4 获取
1 将正则表达式封装成对象 用Pattern.compile(reg);
2 让正则表达式和要操作的字符串关联
3 关联后获取正则表达式匹配引擎
4 通过引擎对符合规则的字串进行操作
public class Ip {
public static void main(String[] args) {
// 邮箱判断
String mail = "hei ma hei ma chong a ha ha ";
String telma = "\\b[a-z]{2}\\b";
// 把规则封装成对象
Pattern p = Pattern.compile(telma);
// 让正则对象和要操作的字符串关联,获取匹配器对象
Matcher m = p.matcher(mail);
// boolean b = m.find();//对字符串进行符合规则匹配查找
// String s = m.group();//获得符合规则的字符串
while (m.find()) {
String s = m.group();
System.out.println(s);
}
}
}
字符
\t 制表符 ('\u0009')
\n 新行(换行)符 ('\u000A')
\r 回车符 ('\u000D')
\f 换页符 ('\u000C')
\a 报警 (bell) 符 ('\u0007')
\e 转义符 ('\u001B')
字符类
abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)
预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
\B 非单词边界
\A 输入的开头
\G 上一个匹配的结尾
\Z 输入的结尾,仅用于最后的结束符(如果有的话)
\z 输入的结尾
public class Ip {
public static void main(String[] args) {
// 邮箱判断
String mail = "hks2008123@163.com";
String telma = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+";
// 把规则封装成对象
Pattern p = Pattern.compile(telma);
// 让正则对象和要操作的字符串关联,获取匹配器对象
Matcher m = p.matcher(mail);
boolean b = m.matches();
System.out.println(b);
}
}
---------------------- android培训 、java培训 、期待与您交流! ----------------------