【JAVA正则表达式综合练习】
一、治疗口吃。
将字符串“我我我我我我我..........我.......要要要要要..................要要要要...学习习习习.......习习习习习习习习编程程程程程程.......程程程程程程程程程”变成“我要学习编程”
分析:先将....去掉:使用"\\.+"模式,再将叠词替换成一个:使用"(.)\\1+"模式。
代码:
package p02.Exercise;
public class Demo01 {
public static void main(String args[])
{
String str="我我我我我我我..........我.......要要要要要..................要要要要...学习习习习.......习习习习习习习习编程程程程程程.......程程程程程程程程程";
//1.先去掉.
String regex="\\.+";
str=str.replaceAll(regex, "");
// System.out.println(str);
//2.合并叠词。
regex="(.)\\1+";
str=str.replaceAll(regex, "$1");
System.out.println(str);
}
}
运行结果:
我要学习编程
二、ip地址排序。
将若干个ip地址排序输出。
"192.168.10.34 127.0.0.1 105.70.11.75 3.3.3.3"
思路:排序使用TreeSet自动完成,但是排序方式是根据字符串的字典序排序,要想按照大小排序,需要添加前导0,输出的时候需要去掉前导0.
代码:
package p02.Exercise;
import java.util.TreeSet;
public class Demo02 {
public static void main(String args[])
{
String str="192.168.10.34 127.0.0.1 105.70.11.75 3.3.3.3";
//1.先分割ip地址。
String regex=" +";
String arr[]=str.split(regex);
for(String s:arr)
System.out.println(s);
System.out.println();
System.out.println();
//2.给每个字节段不足3位的补零,先补上两个0
regex="(\\d+)";
for(int i=0;i<arr.length;i++)
{
arr[i]=arr[i].replaceAll(regex, "00$1");
}
//3.去掉多余的0,只保留三位。
regex="0*(\\d{3})";
for(int i=0;i<arr.length;i++)
{
arr[i]=arr[i].replaceAll(regex, "$1");
System.out.println(arr[i]);
}
System.out.println();
System.out.println();
//4.放入TreeSet集合进行排序。
TreeSet <String>ts=new TreeSet<String>();
for(String s:arr)
{
ts.add(s);
}
regex="0*(\\d+)";
for(String s:ts)
{
System.out.println(s.replaceAll(regex, "$1"));
}
}
}
运行结果:
192.168.10.34
127.0.0.1
105.70.11.75
3.3.3.3 192.168.010.034
127.000.000.001
105.070.011.075
003.003.003.003 3.3.3.3
105.70.11.75
127.0.0.1
192.168.10.34
在去掉多余的0的时候,使用的模式是:"0*(\\d+)",这样即使全部都是0,在最后使用$1进行替换的时候也能留住最后一个0。
三、校验邮箱。
使用的模式:"\\w+@[a-zA-Z0-9]+(\\.[a-z]{2,3}){1,2}",意思用户标识符为字母数字下划线,长度不限;邮件服务器域名第一个单词应为字母数字的组成,其余应为小写字母组成。
代码:
package p02.Exercise;
public class Demo03 {
public static void main(String args[])
{
String str="kdyzm@sina.com";
String regex="\\w+@[a-zA-Z0-9]+(\\.[a-z]{2,3}){1,2}";
System.out.println(str.matches(regex));
}
}
【JAVA正则表达式综合练习】的更多相关文章
- java正则表达式
java正则表达式 1.Java正则表达式的语法与示例: http://baike.xsoftlab.net/view/207.html 2.Java 正则表达式: http://www.runo ...
- Java正则表达式入门——转自RUNOOB.COM
Java 正则表达式 正则表达式定义了字符串的模式. 正则表达式可以用来搜索.编辑或处理文本. 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别. Java正则表达式和Perl的是最为相似 ...
- Java 正则表达式详解
Java 提供了功能强大的正则表达式API,在java.util.regex 包下.本教程介绍如何使用正则表达式API. 正则表达式 一个正则表达式是一个用于文本搜索的文本模式.换句话说,在文本中搜索 ...
- 【转】详解Java正则表达式语法
(转自: http://www.jb51.net/article/76354.htm) 这篇文章主要介绍了Java正则表达式语法,包括常用正则表达式.匹配验证-验证Email是否正确以及字符串中查询字 ...
- java正则表达式【大全】
[正则表达式]文本框输入内容控制整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$只能输入数字:"^[0-9]*$".只能输入n位的数字:"^\d{n}$& ...
- JAVA正则表达式:Pattern类与Matcher类详解(转)
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表 ...
- JAVA正则表达式:Pattern类与Matcher类详解
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表 ...
- Java 正则表达式[转载]
PS:转载自CSDN博客看上去很美 众所周知,在程序开发中,难免会遇到需要匹配.查找.替换.判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力.因此,学 ...
- Java正则表达式的应用
在很多种情况下,我们都必须对字符串进行匹配,以便判断字符串的格式是否符合要求,对字符串中的内容进行提取.比如,我要从一段话aabdfe中,判断这段话是否有包含ab这个词,那么如果用if-else来判断 ...
随机推荐
- POJ 1273 网络流(最大流)模板
http://poj.org/problem?id=1273 这道题很值得反思,弄了一下午,交上去先是一直编译错误,而在本地运行没有问题, 原因可能是oj的编译器版本老旧不支持这样的写法 G[from ...
- composer 的使用
composer是php包管理工具,非常好用!许多框架,例如zendframework都可以用它来安装. 使用起来其实是很简单的.以下以windowns操作系统为例: 把php添加到系统环境变量.(网 ...
- HTK搭建语音拨号系统实验材料下载
选自:http://maotong.blog.hexun.com/6267266_d.html 压缩包包括全部的配置文件,脚本文件,必备的模型文件和实验手册. 全部实验材料的下载链接: 1 http: ...
- git中找回丢失的对象
本文转载自:http://gitbook.liuhui998.com/5_9.html 译者注: 原书这里只有两个链接: Recovering Lost Commits Blog Post,Recov ...
- POJ 2352
---恢复内容开始--- http://poj.org/problem?id=2352 这是一个树状数组的题目,也是我第一次接触这类的题目,也正是因为之前的一道题,TLE了,超时太严重了,我看disc ...
- 基于隐马尔科夫模型(HMM)的地图匹配(Map-Matching)算法
文章目录 1. 1. 摘要 2. 2. Map-Matching(MM)问题 3. 3. 隐马尔科夫模型(HMM) 3.1. 3.1. HMM简述 3.2. 3.2. 基于HMM的Map-Matchi ...
- iOS 8 WKWebView
首先看看这篇文章,写得很好:http://nshipster.cn/wkwebkit/ 再推荐去看看 iOS_8_by_Tutorials 这本书里的 WKWebView相关章节! 我这里说下自己的简 ...
- linux下的防火墙iptables
防火墙(firewall),也称为防护墙,是由Check Point创立者Gil Shwed于1993年发明并引入国际互联网.它是一项信息安全的防护系统,依照特定的规则,允许或者是限制传输的数据通过. ...
- 【转】TextView长按复制实现方法小结
有这么一个需求,用户在浏览文本信息时希望长按信息就能弹出复制的选项方便保存或者在别的页面使用这些信息.类似的, 就像长按WebView或者EditText的内容就自动弹出复制选项. 这里面主要是2个特 ...
- js事件监听器用法实例详解
这篇文章主要介绍了js事件监听器用法,以实例形式较为详细的分析了javascript事件监听器使用注意事项与相关技巧,需要的朋友可以参考下本文实例讲述了js事件监听器用法.分享给大家供大家参考.具体分 ...