配色: 字号:
JAVA中正则表达式匹配,替换,查找,切割的方法
2016-08-30 | 阅:  转:  |  分享 
  
JAVA中正则表达式匹配,替换,查找,切割的方法



Stringstr;

str.split();方法中传入按照什么规则截取,返回一个String数组

常见的截取规则:

str.split("\\.")按照.来截取

str.split("")按照空格截取

str.split("cc+")按照c字符来截取,2个c或以上

str.split((1)\\.+)按照字符串中含有2个字符或以上的地方截取(1)表示分组为1

截取的例子;

按照分组截取;截取的位置在两个或两个以上的地方

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17 Stringstr="publicstaticccvoidddmain";?

???//对表达式进分组重用?

???Stringragex1="(.)\\1+";?

???String[]ss=str.split(ragex1);

???for(Stringst:ss){

???System.out.println(st);?

???}

//按照两个cc+来截取

Stringragex="";?

??//切割?

???Stringstrs="publicstaticccvoidddmain";?

??Stringragexs="cc+";

??String[]s=strs.split(ragexs);

??for(StringSSSS:s){

??System.out.println(SSSS);

??}

??System.out.println("=-========="); ?

1 Strings=str.replaceAll(ragex,newstr); 字符串中的替换是replace();

将4个或4个以上的连续的数字替换成

?

1

2

3

4

5

6 //替换

???Stringstr="wei232123jin234";

???Stringragex="\\d{4,}";

???Stringnewstr="";

???Strings=str.replaceAll(ragex,newstr);

???System.out.println(s); ?

1

2

3

4

5 Stringstr="wwweiei222222jjjiiinnn1232";

???Stringragex="(.)\\1+";

???StringnewStr="";

???Strings=str.replaceAll(ragex,newStr);

???System.out.println(s);

将我...我...要..要.吃...吃...饭换成我要吃饭

?

1

2

3

4

5

6

7

8

9

10

11

12 Stringstr="我...我...要..要.吃...吃...饭";

??Stringregex="\\.+";

??StringnewStr="";

??str=test(str,regex,newStr);

??regex="(.)\\1+";

??newStr="$1";

??test(str,regex,newStr);

publicstaticStringtest(Stringstr,Stringregex,StringnewStr){

??Stringstr2=str.replaceAll(regex,newStr);

??System.out.println(str2);

??returnstr2;

?} 正则表达式的字符串的获取

1,根据定义的正则表达式创建Pattern对象

2,使用Pattern对象类匹配

3,判断是否为true

4,加入到组

例子;

?

1

2

3

4

5

6

7

8

9 Stringstr="publicstaticvoidmain(String[]args)"

????+"publicstaticvoidmain(String[]args)publicstaticvoidmain(String[]args)";

?Stringragex="\\b[a-zA-Z]{4,5}\\b";

?Patternp=Pattern.compile(ragex);

?Matcherm=p.matcher(str);

????while(m.find()){

????Strings=m.group();

????System.out.println(s);

????} 作业:

1,获取user中的user

?

1

2

3

4

5 Stringstr="user";

Stringregex="|";?

?StringnewStr="";?

Stringstr2=str.replaceAll(regex,newStr);

www.hunanwang.net(str2); 2,获取dhfjksaduirfn11@qq.comdsjhkfawang@163.comwokaz中的邮箱号码

?

1

2

3

4

5

6

7

8

9

10

11 Stringregex="";?

String[]strs=str.split(regex);

?for(Stringstr2:strs){

?StringragexDemo="[a-zA-Z0-9]([a-zA-Z0-9][-_]?[a-zA-Z0-9]+)"

?+"@([a-zA-Z0-9]+)\\.[a-zA-Z]+\\.?[a-zA-Z]{0,2}";

Patternp=Pattern.compile(ragexDemo);

Matcherm=p.matcher(str2);

while(m.find()){

www.visa158.com(m.group());

??}

?} 示例代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

3

importjava.util.ArrayList;

importjava.util.regex.Matcher;

importjava.util.regex.Pattern;

??

publicclasstest{

??publicstaticvoidmain(String[]args){

????getStrings();//用正则表达式获取指定字符串内容中的指定内容

????System.out.println("");

????replace();//用正则表达式替换字符串内容

????System.out.println("");

????strSplit();//使用正则表达式切割字符串

????System.out.println("");

????strMatch();//字符串匹配

??}

??

??privatestaticvoidstrMatch(){

????Stringphone="13539770000";

????//检查phone是否是合格的手机号(标准:1开头,第二位为3,5,8,后9位为任意数字)

????System.out.println(phone+":"+phone.matches("1[358][0-9]{9,9}"));//true??

??????

????Stringstr="abcd12345efghijklmn";

????//检查str中间是否包含12345

????System.out.println(str+":"+str.matches("\\w+12345\\w+"));//true

????System.out.println(str+":"+str.matches("\\w+123456\\w+"));//false

??}

??

??privatestaticvoidstrSplit(){

????Stringstr="asfasf.sdfsaf.sdfsdfas.asdfasfdasfd.wrqwrwqer.asfsafasf.safgfdgdsg";

????String[]strs=str.split("\\.");

????for(Strings:strs){

??????System.out.println(s);

????}????

??}

??

??privatestaticvoidgetStrings(){

????Stringstr="rrwerqq84461376qqasfdasdfrrwerqq84461377qqasfdasdaa654645aafrrwerqq84461378qqasfdaa654646aaasdfrrwerqq84461379qqasfdasdfrrwerqq84461376qqasfdasdf";

????Patternp=Pattern.compile("qq(.?)qq");

????Matcherm=p.matcher(str);

????ArrayListstrs=newArrayList();

????while(m.find()){

??????strs.add(m.group(1));??????

????}?

????for(Strings:strs){

??????System.out.println(s);

????}????

??}

??

??privatestaticvoidreplace(){

????Stringstr="asfas5fsaf5s4fs6af.sdaf.asf.wqre.qwr.fdsf.asf.asf.asf";

????//将字符串中的.替换成_,因为.是特殊字符,所以要用\.表达,又因为\是特殊字符,所以要用\\.来表达.

????str=str.replaceAll("\\.","_");

????System.out.println(str);????

??}

}

献花(0)
+1
(本文系爱就请温柔...首藏)