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--正则表达式的主要内容,如果未能解决你的问题,请参考以下文章