正则

----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------

正则:



好处:正则的出现,对字符串的复杂操作变得更为简单。
特点:将对字符串操作的代码用一些符号来表示。只要使用了指定符号,就可以调用底层的代码对字符串进行操
作。符号的出现,简化了代码的书写。
弊端:符号的出现虽然简化了书写,但是却降低了阅读性。
其实更多是用正则解决字符串操作的问题。


组:用小括号标示,每定义一个小括号,就是一个组,而且有自动编号,从 1 开始。
只要使用组,对应的数字就是使用该组的内容。别忘了,数组要加\\。
(aaa(wwww(ccc))(eee))技巧,从左括号开始数即可。有几个左括号就是几组。


如果要操作正则,那么必须使用一系列的正则匹配符号,而所有的符号都在java.util.regex包中


方法:matchs正则验证


replaceAll全部替换


replaceFirst替换首个


split(String regex)全部拆分


split(String regex,int limit)部分拆分


 一、正则符号:


1、表示单个字符(每出现一个只表示一位)


x:表示只能由x组成


\\:表示转义字符“\”
\t:匹配“tab”键
\n:匹配换行


2、表示字符的选用范围


[abc]:表示可能是a.b.c中的任意一个
[^abc]:表示不是a.b.c中任意一个
[a-zA-Z]表示任意一位字母
[0-9]表示任意一位数字


3、 简化表达式


· :表示任意一位字符
\d:表示一位数字,相当于[0-9]
\D表示不是一位数字相当于[^0-9]
\s表示任意一位空格
\S表示不是任意一位空格
\w表示大小写字母,数字,_中任意一位
\W相反


4、 边界匹配


^写在正则之前,表示正则开始
$写在正则最后,表示正则结束


5 数量表示:如果没有数量,每一个表示一位,有了数量才能表示多位


正则?:表示只能出现0位或者1位
正则*表示此正则出现0次,一次,或多次
正则+表示出现一次或多次
正则{n}表示正好出现n次
正则{n,}表示出现n次以上
正则{n,m}表示最少n次,最多m次


6、逻辑操作符


正则X正则Y表示正则X判断后执行正则Y
正则X|正则Y表示两个正则二选一
(正则)包含多个正则,成为一组


 


 
















38. public static void functionDemo_1??{


39. //匹配手机号码是否正确


40. String tel = "13821882946";


41.


42. String regex = "1[358]\\d{9}";


43.


44. boolean b = tel.matches?regex?;


45.


46. System.out.println?tel + ":" + b?;


47. }


48.


49. 


52. public static void functionDemo_2??{


53. String str = "zhangsan xiaoqiang zhaoliu";


54.


55. String[] names = str.split?" +"?;


56.


57. for?String name : names?{


58. System.out.println?name?;


59. }


60. }


61.


62. public static void functionDemo_3??{


63. String str = "zhangsan.xiaoqiang.zhaoliu";


64.


65. String[] names = str.split?"\\."?;


66.


67. for?String name : names?{


68. System.out.println?name?;


69. }


70. }


71.


72. 


80. public static void functionDemo_4??{


81. String str = "zhangsanttttxiaoqiangmmmmmzhaoliu";


82.


83. //?.?表示一组,\\1+表示与第1组相同的出现1次以上


84. String[] names = str.split?"?.?\\1+"?;


85.


86. for?String name : names?{


87. System.out.println?name?;


88. }


89. }


90.


91. 


94. public static void functionDemo_5??{


95. String str = "zhangsanttttxiaoqiangmmmmmzhaoliu";


96.


97. //$表示前一个参数的第一组


98. str = str.replaceAll?"?.?\\1+","$1"?;


99.


100. System.out.println?str?;


101. }


102.


103. public static void functionDemo_6??{


104. String str = "15800001111";


105.


106. str = str.replaceAll?"?\\d{3}??\\d{4}??\\d{4}?","$1****$2"?;


107.


108. System.out.println?str?;


109. }


110.


111. 


118. public static void functionDemo_7??{


119. String str = "da jia hao,ming tian bu fang jia";


120.


121. // \\b表示单词边界


122. String regex = "\\b[a-z]{3}\\b";


123.


124. //1. 将正则封装成对象


125. Pattern p = Pattern.compile?regex?;


126.


127. //2. 通过正则对象获取匹配器对象


128. Matcher m = p.matcher?str?;


129.


130. //使用Matcher对象的方法对字符串进行操作。


131. //既然要获取三个字母组成的单词。


132. //查找:find;


133. while m.find{


134. System.out.println?m.group;//获取匹配的子序列


135. System.out.println m.start + ":" + m.end;


136. }


137. }


138. }


----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值