标签:regex 匹配 String matches System 正则 println Java out
* [abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] d、e 或 f(交集)
[a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)
例子:
String regex = "[a-z&&[^m-p]]"; System.out.println("m".matches(regex));
*. 任何字符
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
例子:
String regex = "\\W"; System.out.println("a".matches(regex)); System.out.println("z".matches(regex)); false false
Greedy 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
用例:
String regex = "[abc]{5,15}"; System.out.println("abcba".matches(regex)); System.out.println("abcbaabcabbabab".matches(regex));
正则表达式的分组功能
* 捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:
*
1 ((A)(B(C)))
2 (A
3 (B(C))
4 (C)
组零始终代表整个表达式。
B:案例演示
a:切割
需求:请按照叠词切割: "sdqqfgkkkhjppppkl";
b:替换
需求:我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程
将字符串还原成:“我要学编程”。
用例:
String s3 = s2.replaceAll("(.)\\1+", "$1"); //$1代表第一组中的内容
A:正则表达式的获取功能
* Pattern和Matcher的结合使用
B:案例演示
* 需求:把一个字符串中的手机号码获取出来
Matcher m = p.matcher(regex); boolean b = m.matches(s); String s = "我的手机是18511866260,我曾用过18987654321,还用过18812345678"; String regex = "1[3578]\\d{9}"; Pattern p = Pattern.compile(regex); Matcher m = p.matcher(s); /*boolean b1 = m.find(); System.out.println(b1); System.out.println(m.group());
标签:regex,匹配,String,matches,System,正则,println,Java,out 来源: https://www.cnblogs.com/lvpengbo/p/12248736.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。