String类中支持正则表达式的方法:
.replaceAll() //将字符串中符合条件的内容替换成指定子串,
.replaceFirst()//将字符串中符合条件的内容替换成指定子串,仅替换第一个
.split() //将字符串按括号内字符分割成数组
.matches() // 判断字符串是否有指定子串
[\u4e00-\u9fa5] 表示任意汉字(Unicode码)
.
表示匹配一个任意字符\d 代表0-9 等价于 [0-9]
+ 代表前面字符出现的次数 从1次到无限次 等价于 {1,}
* 代表前面字符出现的次数 从0次到无限次 等价于{0,}
| 代表或,写法为 “([A-Z]|[a-z])”
\s 空格
?相当于它前面的字符出现的次数{0,1}
^表达式开始
$表达式结尾
{n} n个
{n,} n个或多个
{m,n} m个到n个
\D 0-9取反 ,[^0-9]
\w [a-zA-Z0-9]
\W a-z,A-Z,0-9取反(不含这些的) [^a-zA-Z0-9]
() 分组
分组例子:分组后不显示<div>
matcher()
判断字符串和正则表达式是否匹配,返回一个boolean类型值
"java52IKLK123".matcher("[a-z]*[0-9]+[A-Z]*.*")//返回true
Pattern 类:pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一 个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正 则表达式作为它的第一个参数。
Matcher 类:Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样, Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。
输出子类
static void ziChuan() { String s1 = "<div>my java 20</div>java2018\n<div>my javascript8</div>\n<div>hello</div><span>java</span><div>java</div>"; //compile("正则表达式",Pattern.CASE_INSENSITIVE); //Pattern.CASE_INSENSITIVE=2,代表忽略大小写 Pattern p1 = Pattern.compile("<div>[a-z0-9 ]*java[a-z0-9\\s]*</div>", 2); Matcher m1 = p1.matcher(s1); while (m1.find()) { System.out.println(m1.group()); } }
分组
static void fenZu() { String s1 = "<div>my java 20</div>java2018\n<div>my javascript8</div>\n<div>hello</div><span>java</span><div>java</div>"; Pattern p1 = Pattern.compile("(<div>[a-z0-9 ]*)(java)([a-z0-9\\s]*</div>)", 2); Matcher m1 = p1.matcher(s1); String s2 = m1.replaceAll("$1$2+++$3"); System.out.println(s2); }