您的位置:首页 > 其它

正则

2016-03-02 21:58 211 查看
----------- 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学习型技术博客、期待与您交流! ------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: