java--正则表达式

Posted 努力的鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java--正则表达式相关的知识,希望对你有一定的参考价值。

正则表达式概念:一个字符串,一个规则

String regex ="[1-9]\d{4,14}"

str.matches(regex)  返回值类型boolean

java.util.regex下的Pattern类


 

单个字符类

[abc] []代表单个字符,表示a或b或c字符

[^abc] 除a/b/c外的任何字符

[a-zA-Z]表示范围,两头的字母包括

[a-d[m-p]]并集

[a-z&&[def]]交集

[a-z&&[^bc]] = [ad-z]

[a-z &&[^m-p]]减去


 

预定义字符类

. 任意字符

d =[0-9]     // 表示转义字符,如果想表示d的话,需要\d

D [^0-9]非数字

s 空白字符 [ x0Bf ] table键水平制表符, 换行 回车   匹配空格和table键的等

S 非空白字符

w 单词字符[a-zA-Z_0-9]

W 非单词字符

 


数量词 Greedy

X ? X一次或一次也没有 注意:一次也没有指得是X,也不能出现其他的""

X* X零次到多次

X+ X一次到多次

X{n} X出现n次

X{n,}x出现至少n次

X{n,m}x出现n-m次

 


 

注意:split分割时,如使用.分割,需要\.


 

replaceall 正则表达式的替换功能

String s = "wo1ai2heima";

String regex = "\d";

String s2 = s.replaceAll(regex,"");


 

正则表达式的分组功能

1.组零代表整个表达式

2.其他按照左括号分组

String regex = "(.)\1(.)\2" \1第一组出现两次 \2第二组出现两次

String regex = "(.)\1+" +表示第一组出现一次到多次

String s = str.replaceAll("(.)\1+","$1")$1表示第一组中的内容

 


 

Pattern 和Matcher概述

Pattern不能被继承,其典型调用顺序为:

Pattern p = Pattern.compile(String regex);  获取正则表达式

Matcher m = p.matcher(String str) ; 获取str的匹配器

boolean b = m.matches(); 看是否能匹配,匹配就返回true

上面三步骤等于 str.matches(regex)

上面的第一种方法看似是复杂的,但是其相较于第二种方法有更加实用的场景,如获取字符串中的手机号码等。

Pattern p = Pattern.compile(String regex);  获取正则表达式

Matcher m = p.matcher(String str) ; 获取str的匹配器

boolean b = m.find(); 看是否有匹配的子串,匹配就返回true

String s1= m.group();返回上次匹配的子串

while(m.find())

      System.out.println(m.group);    获取字符串中匹配的所有子串。

 

以上是关于java--正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

java 正则表达式

java编程基础 正则表达式

java匹配url的正则表达式

java正则表达式怎么书写?

java 正则表达式 ^java 是啥意思

JAVA正则表达式代码