java入门 -- 正则详细

package cn.itcast.Map;

import java.util.Arrays;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

/*

* 正則表達式

*  預定義字符:

*  . 任何字符(与行结束符可能匹配也可能不匹配)

*      \d 数字 [0-9]

*      \D 非数字[^0-9]

*      \s 空白字符 [\t\n\x0B\f\r]

*      \S 非空白字符 [^\s]

*      \w 组成单词的字符[a-zA-Z_0-9]

*      \W 非单词字符 [^\w]

*      注意:元字符只能匹配一个字符

* 匹配多位:

* ? 匹配0次或者一次;

*  x* 匹配0次或多次

*  + 出现1次或多次

*  {n} 出现n次

*  {n,} 出现至少n次

*  {n,m} 出现n到m次

* 范围

* [abc] a,b或c

* [^abc] 任何字符,出了abc以外

* [a-zZ-Z] a到z或者A到Z, 包含开头和结尾

* [a-d[m-p]] a到d 或 m到p [a-dm-p】并集

* [a-z&&[def] d,e或f 交集

*    注意:范围也是只匹配一个字符,如果要匹配数量,需要使用数量多位匹配

*

* 边界匹配器

* ^行开始

* $行结尾

* \b 单词边界

* 正则表达式的作用:

*

* 1. 匹配

* 如果正则表达式的内容需要被复用,那么就需要对正则表达式进行分组,目的是复用匹配内容。组号不能指定,是从1开始的。

* (rgex)用括号进行分组

* \1 表示第一组的内容

* \2 表示第二组的内容

* 如果在regex外引用分组内容,要使用$符号

*

*

* 2. 切割

* split()

*

* 2. 替换

* replaceAll(String regex, String replacement))  全部替换

*

* 4. 查找

* 指定为字符串的正则表达式必须先被编译为此类的实例,然后再将得到的模式用于创建Mather对象

* 依照正则表达式,该对象可以与任意字符序列匹配,执行匹配送涉及的所有状态驻留在匹配器中,所以多个匹配器可以共享同一模式,因此

* 典型的顺序是:

*  Pattern p = Pattern.compile("a*b");

*  Matcher m = p.matcher("aaaaab");

*  查找需要的类

*  Pattern 正则类

*  Matcher 匹配器对象

*  匹配器的方法:

*  1. find() 通知匹配器去匹配符合条件的子串,如果能找到返回TRUE,找不到返回false

*  2 .group() 获取符合条件的子串

*

*  注意: 使用group方法的时候,一定要使用find方法先去查找,类似迭代查找输出,直到查找不到

*

*

*/

public class Demo5 {

public static void main(String[] args) {

System.out.println("%".matches("."));

System.out.println("9".matches("\\d"));

String str = "大家家家明天天天天回很开开心心心的回家家乐";

String[] arr = str.split("(.)\\1+");

System.out.println(Arrays.toString(arr));

replaceTest();

matchTest();

}

public static void replaceTest(){

String str = "我我我我我我爱爱爱你你你,真真的!";

str = str.replaceAll("(.)\\1+","$1");

System.out.println(str);

}

public static void matchTest(){

//找出3个字母组成的单词

String content = "da jia de jia qi wang ti hjiao fjdsl fds";

String reg = "\\b[a-zA-Z]{3}\\b";

Pattern p = Pattern.compile(reg);

Matcher m = p.matcher(content);

while(m.find()){

System.out.println(m.group());

}

}

}

推荐阅读更多精彩内容

  • 小编提示:此篇文章阅读时间为15分钟左右,可先收藏后阅读。 前言 正则表达式是用来处理字符串的一把利器,它是一个专...
    恒生GTN阅读 16,922评论 1 9
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 119,253评论 16 133
  • 1.正则表达式介绍 正则表达式算起来也是一个很庞大的语言系统,在所有的开发语言中基本都支持正则表达式,它可以很方便...
    babybus_superdo阅读 1,563评论 3 6
  • 最近学习到第 23 天了,还有 4 天时间我的 JavaSE 课程就要结束了,之后会有一个考试,需要复习一下,正好...
    SawyerZh阅读 563评论 0 11
  • 数据流向 关于Spider 在我看来,Spider主要负责Request的生成,和Response的处理(解析)。...
    troy_ld阅读 2,312评论 0 7