【JAVA正则表达式综合练习】

一、治疗口吃。

将字符串“我我我我我我我..........我.......要要要要要..................要要要要...学习习习习.......习习习习习习习习编程程程程程程.......程程程程程程程程程”变成“我要学习编程”

分析:先将....去掉:使用"\\.+"模式,再将叠词替换成一个:使用"(.)\\1+"模式。

代码:

 1 package p02.Exercise;
 2
 3 public class Demo01 {
 4     public static void main(String args[])
 5     {
 6         String str="我我我我我我我..........我.......要要要要要..................要要要要...学习习习习.......习习习习习习习习编程程程程程程.......程程程程程程程程程";
 7         //1.先去掉.
 8         String regex="\\.+";
 9         str=str.replaceAll(regex, "");
10 //        System.out.println(str);
11         //2.合并叠词。
12         regex="(.)\\1+";
13         str=str.replaceAll(regex, "$1");
14         System.out.println(str);
15     }
16 }

运行结果:

我要学习编程

二、ip地址排序。

将若干个ip地址排序输出。

"192.168.10.34  127.0.0.1   105.70.11.75            3.3.3.3"

思路:排序使用TreeSet自动完成,但是排序方式是根据字符串的字典序排序,要想按照大小排序,需要添加0,输出的时候需要去掉0.

代码:

 1 package p02.Exercise;
 2
 3 import java.util.TreeSet;
 4
 5 public class Demo02 {
 6     public static void main(String args[])
 7     {
 8         String str="192.168.10.34   127.0.0.1   105.70.11.75            3.3.3.3";
 9         //1.先分割ip地址。
10         String regex=" +";
11         String arr[]=str.split(regex);
12         for(String s:arr)
13             System.out.println(s);
14         System.out.println();
15         System.out.println();
16
17         //2.给每个字节段不足3位的补零,先补上两个0
18         regex="(\\d+)";
19         for(int i=0;i<arr.length;i++)
20         {
21             arr[i]=arr[i].replaceAll(regex, "00$1");
22         }
23         //3.去掉多余的0,只保留三位。
24         regex="0*(\\d{3})";
25         for(int i=0;i<arr.length;i++)
26         {
27             arr[i]=arr[i].replaceAll(regex, "$1");
28             System.out.println(arr[i]);
29         }
30         System.out.println();
31         System.out.println();
32         //4.放入TreeSet集合进行排序。
33         TreeSet <String>ts=new TreeSet<String>();
34         for(String s:arr)
35         {
36             ts.add(s);
37         }
38         regex="0*(\\d+)";
39         for(String s:ts)
40         {
41             System.out.println(s.replaceAll(regex, "$1"));
42         }
43     }
44 }

运行结果:

 1 192.168.10.34
 2 127.0.0.1
 3 105.70.11.75
 4 3.3.3.3
 5
 6
 7 192.168.010.034
 8 127.000.000.001
 9 105.070.011.075
10 003.003.003.003
11
12
13 3.3.3.3
14 105.70.11.75
15 127.0.0.1
16 192.168.10.34

在去掉多余的0的时候,使用的模式是:"0*(\\d+)",这样即使全部都是0,在最后使用$1进行替换的时候也能留住最后一个0。

三、校验邮箱。

使用的模式:"\\[email protected][a-zA-Z0-9]+(\\.[a-z]{2,3}){1,2}",意思用户标识符为字母数字下划线,长度不限;邮件服务器域名第一个单词应为字母数字的组成,其余应为小写字母组成。

代码:

 1 package p02.Exercise;
 2
 3 public class Demo03 {
 4     public static void main(String args[])
 5     {
 6         String str="[email protected]";
 7         String regex="\\[email protected][a-zA-Z0-9]+(\\.[a-z]{2,3}){1,2}";
 8         System.out.println(str.matches(regex));
 9     }
10 }

时间: 2024-10-03 13:46:37

【JAVA正则表达式综合练习】的相关文章

JAVA正则表达式:Pattern类与Matcher类详解(转)

java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表现模式. Matcher 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查. 首先一个Pattern实例订制了一个所用语法与PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作

Java正则表达式教程及示例

本文由 ImportNew - ImportNew读者 翻译自 journaldev.欢迎加入翻译小组.转载请见文末要求. [感谢 @CuGBabyBeaR  的热心翻译.如果其他朋友也有不错的原创或译文,可以尝试投递到 ImportNew.] 当我开始我的Java职业生涯的时候,对于我来说正则表达式简直是个是梦魇.本教程旨在帮助你驾驭Java正则表达式,同时也帮助我复习正则表达式. 什么是正则表达式? 正则表达式定义了字符串的模式.正则表达式可以用来搜索.编辑或处理文本.正则表达式并不仅限于某

JAVA 正则表达式 (超详细)

(PS:这篇文章为转载,我不喜欢转载的但我觉得这篇文章实在是超赞了,就转了过来,这篇可以说是学习JAVA正则表达的必读篇.作者是个正真有功力的人,阅读愉快) 在Sun的JavaJDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包. 可粗略估计一下,除了偶尔用Linux的外,其他Linu x用户都会遇到正则表达式.正则表达式是个极端强大工具,而且在字符串模式-匹配和字符串模式-替换方面富有弹性.在Unix世界里,正则表达式几乎没有

Java 正则表达式(精华)

英文:Jakob Jenkov译文:严亮链接:ifeve.com/java-regex/ Java 提供了功能强大的正则表达式API,在java.util.regex 包下.本教程介绍如何使用正则表达式API. 正则表达式 一个正则表达式是一个用于文本搜索的文本模式.换句话说,在文本中搜索出现的模式.例如,你可以用正则表达式搜索网页中的邮箱地址或超链接. 正则表达式示例 下面是一个简单的Java正则表达式的例子,用于在文本中搜索 http:// String text = "This is th

java正则表达式

在做 Crawler的时候,本来是准备用正则的,但是看jsoup很好用,就没有学,刚刚在做古诗提取的时候,又要用到正则表达式,还是学了算了. 说明: 文章重点参考的http://www.cnblogs.com/ggjucheng/p/3423731.html,加上自己有一点理解. 正则表达式的语法可以参考: http://www.runoob.com/regexp/regexp-syntax.html java正则表达式主要是关于java.util.regex中的两个类: 1.Pattern:正

Java正则表达式入门

众所周知,在程序开发中,难免会遇到需要匹配.查找.替换.判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力.因此,学习及使用正则表达式,便成了解决这一矛盾的主要手段. 大 家都知道,正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.  自从jdk1.4

Java正则表达式初学

之前一直觉得正则表达式很NB,几乎各种类型的字符串都能够通过正则来进行匹配,抱着这种心态开始regular expressions的学习. 总的来讲,regular expressions的语法还是比较简单的,总共也没有多少. 下面先列举regular expressions的字符介绍,最后再通过实例加深对regular expressions的理解. 内容参考:http://www.cnblogs.com/elleniou/archive/2012/07/31/2617312.html 正则表

常用的java正则表达式

正则表达式是编程中的一个难点和重点,下面就列举一些JAVA中常用的正则表达式大全.供大家共同学习. 1 整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$ 2 只能输入数字:"^[0-9]*$". 3 只能输入n位的数字:"^\d{n}$". 4 只能输入至少n位的数字:"^\d{n,}$". 5 只能输入m~n位的数字:."^\d{m,n}$" 6 只能输入零和非零开头的数字:"^(0|[1-9][0

JAVA正则表达式语法大全

[正则表达式]文本框输入内容控制整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$只能输入数字:"^[0-9]*$".只能输入n位的数字:"^\d{n}$".只能输入至少n位的数字:"^\d{n,}$".只能输入m~n位的数字:."^\d{m,n}$"只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$".只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})