一般来说我们对于一段话无非三种操作
- 判断这段话是不是正确(比如:判断“你好”是不是“你好”这两个字,有点像有些部门要你证明你是你,你爸是你爸,)
- 从这段话提炼关键字(比如,“今天是第100天恋爱纪念日”,要提取出100这个数字)
- 替换关键字(比如,“今天是第100天恋爱纪念日”,要对100天加粗=》“今天是第100天恋爱纪念日”)
- 判断是否为目标字符串
例如:怎么判断一个数字为0到9之间的数字呢?如下代码
String num="5";num.match("d");
如果得到true就是0到9的数字,否则就不是
- 提取目标字符串
Pattern pattern = Pattern.compile("(D*)(d*)(D*)"); Matcher m = pattern.matcher("今天是第100天恋爱纪念日"); if(m.matches()){ String g2 = m.group(2); System.out.println(g2); }
一个()就是一组,这里就将“今天是第100天恋爱纪念日”分成了三组
- (D*) :D表示非数字 *表示非数字的个数为任意个
- (d*) : d表示数字,这组就表示任意多个数字,100就满足
- (D*) :这个跟第一组意思一样
String g2 = m.group(2); 就是取出第二组,那么就拿到了100这个数字
- 替换目标字符串
String str = "今天是第100天恋爱纪念日"; String res = str.replaceAll("d{3}", "$0"); System.out.println(res);//今天是第100天恋爱纪念日
正则表达式基本功能仅以上三种,其他功能都是经过这三种变换出来的功能。