Java——正则表达式(字符串操作)
{
/*
* 正则表达式:对字符串的常见操作:
* 1.匹配:
*
其实是用的就是string类中的matches(匹配)方法。* 2.切割
*
其实就是使用的String中的split方法* 3.替换
*
其实就是 使用的就是String中的replaceAll()方法。。* 4.获取。
*
1.将正则规则进行对象的封装。*
Pattern p = Pattern.compile("a*b");*
2.通过正则对象的matcher方法字符串相关联。获取要对字符串操作的匹配对象MatcherMatcher m = p.matcher("aaaaab");
3.通过Matcher匹配器对象的方法对字符串进行操作。
boolean b = m.matches();
*/
public static void main(String[] args)
{
// TODO Auto-generated method stub
//
function1();//
function2();//
function3();function4();
}
/* 4.获取。
*
1.将正则规则进行对象的封装。*
Pattern p = Pattern.compile("a*b");*
2.通过正则对象的matcher方法字符串相关联。获取要对字符串操作的匹配对象MatcherMatcher m = p.matcher("aaaaab");
3.通过Matcher匹配器对象的方法对字符串进行操作。
boolean b = m.matches();*/
public static void function4()
{
String str = "yangchao shi zhengzai haoahao xuexi";
String regex = "\\b[a-z]{3}\\b";//\b 单词边界
//1.将正则封装成对象。
Pattern p = Pattern.compile(regex);
//2.通过正则对象获取匹配器对象。
Matcher m = p.matcher(str);
//通过Matcher匹配器对象的方法对字符串进行操作。
while(m.find())
{
System.out.println(m.group());
}
}
/* 3.替换
*
其实就是 使用的就是String中的replaceAll()方法。。*/public static void function3()
{
String str = "yangchaoeeeeeeeezhangsanrrrrrrlisi";
String regex = "(.)\\1+";
str = str.replaceAll(regex, "#");//yangchao#zhangsan#lisi
System.out.println(str);
String tel = "18629233301";
tel = tel.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");//186****3301
System.out.println(tel);
}
/* * 2.切割
*
其实就是使用的String中的split方法 */public static void function2()
{
//切割(用空格切割)
String str = "yangchao liuyuan zhangsan lixi";
//定义切割规则
String regex = " +";
String[] names = str.split(regex);
for(String name: names)
{
System.out.println(name);
}
}
/* 1.匹配:
*
其实是用的就是string类中的matches(匹配)方法。*/public static void function1()
{
//匹配手机号 是否正确。
String str = "18629233301";
//定义规则
String regex = "1[358][0-9]{9}";
regex = "1[358]\\d{9}";
//开始进行判断
boolean b = str.matches(regex);
System.out.println(str+" "+b);
}
}
对邮箱地址的验证。。。。。。
public static void function3()
{
//邮箱地址的验证:
String mail = "yangchao@sina.com";
String regex = "[a-zA-Z0-9]+@[a-zA-Z0-9]+(\\.[a-zA-Z]{1,3})+";
boolean b = mail.matches(regex);
System.out.println(mail+ " "+ b);
}
将ip 进行排序
public static void function2()
{
/*
* ip排序
* 192.23.44.30 127.0.0.1 3.3.3.3.3 103.23.33.44
*/
String ip = "192.23.44.30 127.0.0.1 3.3.3.3 103.23.33.44";
//1.为了让切割够可以按照字符串顺序比较,只要让ip的每一段的位数相同。
//开始不0 每一段都补上2个0.。。。
ip = ip.replaceAll("(\\d+)", "00$1");
System.out.println(ip);//00192.0023.0044.0030 00127.000.000.001 003.003.003.003 00103.0023.0033.0044
//每一段保留数据3位
ip = ip.replaceAll("0*(\\d{3})", "$1");
System.out.println(ip);//192.023.044.030 127.000.000.001 003.003.003.003 103.023.033.044
//2.将ip切出
String[] ips = ip.split(" +");
TreeSet<String> set = new TreeSet<String>();
for(String p : ips)
{
System.out.println(p);
set.add(p);
}
System.out.println("-----------------------------");
for(String p: set)
{
System.out.println(p.replaceAll("0*(\\d+)", "$1"));
}
}
治疗结巴。。。。。。。。。。。。。。。。。。。。。。。
public static void function1()
{
String str = "我我我我我。。。。叫叫。。。杨杨杨杨杨杨。。。。。。。。超超超超超超。。。。";
//1.将字符串中的。去掉 用替换。
str = str.replaceAll("\\。+", "");
System.out.println(str);
//2.替换叠词
str = str.replaceAll("(.)\\1+", "$1");//.为通配符
System.out.println(str);
}
/*
* 爬取 网络中的 邮箱地址。
*/
public static List<String> getMail2() throws MalformedURLException, IOException
{
URL url = new URL("http:local:8080/mail.html");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(url.openStream()));
List<String> list = new ArrayList<String>();
//对读取到的数据进行规则匹配,从中获取符合规则的数据。
String regex = "\\w+@\\w+(\\.\\w+)+";//定义规则: \w 单词字符:[a-zA-Z_0-9]
Pattern p = Pattern.compile(regex);//封装成对象将 规则。。
String line=null;
while((line=bufferedReader.readLine()) != null)
{
Matcher m = p.matcher(line);
while(m.find())
{
//将符合的数据 存储到 集合中。
list.add(m.group());
}
}
return list;
}
/*
* 爬取 文件 中的 邮箱地址。。
*/
public static List<String> getMail() throws FileNotFoundException, IOException
{
//读取源文件
BufferedReader bufferedReader = new BufferedReader(new FileReader("C:\\Users\\Administrator\\Desktop\\黑马\\mail.txt"));
List<String> list = new ArrayList<String>();
//对读取到的数据进行规则匹配,从中获取符合规则的数据。
String regex = "\\w+@\\w+(\\.\\w+)+";//定义规则: \w 单词字符:[a-zA-Z_0-9]
Pattern p = Pattern.compile(regex);//封装成对象将 规则。。
String line=null;
while((line=bufferedReader.readLine()) != null)
{
Matcher m = p.matcher(line);
while(m.find())
{
//将符合的数据 存储到 集合中。
list.add(m.group());
}
}
return list;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
Java——正则表达式(字符串操作)的更多相关文章
- JAVA作业—字符串操作
------------恢复内容开始------------ ------------恢复内容开始------------ ------------恢复内容开始------------ ------- ...
- Java的字符串操作
目录 Java的字符串操作 一.不同字符串操作的对比 1.1 C++中const修饰指针 const在星号的左边,是被指向的常量不可变 const在星号的右边,是指针的指向不可变 二. Java字符串 ...
- Java的字符串操作一些简单的思考
Java的字符串操作 1 .1不可变的String String对象事不可变的,String类中的每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,以包含修改后的字符 ...
- Java 正则表达式实例操作
Regular Expression正则表达式,简称RegExp,常规通用的表达式,在多个开发语言中都有它的实现,可以通过正则表达式来快速的检索.匹配.查找.替换字符串中的文本. 简单实例 匹配网址 ...
- java类库字符串操作
在java类库中,java给我们提供了字符串几个特别的操作,分别是String,Stringbuffer,Stringbuilder等.下面就对这几个类做一个简单的介绍.首先,我们先了解一下Strin ...
- Java String 字符串操作小结
// 转载加编辑 -- 21 Apr 2014 1. Java字符串中子串的查找 Java中字符串中子串的查找共有四种方法,如下: 1.int indexOf(String str) :返回第一次出现 ...
- Java Script 字符串操作
JS中常用几种字符串操作: big() small() bold() fontcolor() fontsize() italics() strike() link() charAt() charCod ...
- 使用javap分析Java的字符串操作
我们看这样一行简单的字符串赋值操作的Java代码. String a = "i042416"; 使用命令行将包含了这行代码的Java类反编译查看其字节码: javap -v con ...
- 四:Java之字符串操作String、StringBuffer和StringBuilder
string是我们经经常使用到的一个类型,事实上有时候认为敲代码就是在重复的操作字符串,这是C的特点,在java中.jdk非常好的封装了关于字符串的操作.三个类String .StringBuffer ...
- Java基础(一)-- Java对字符串操作大全
一.Java字符串类基本概念 在JAVA语言中,字符串数据实际上由String类所实现的.Java字符串类分为两类:一类是在程序中不会被改变长度的不变字符串:二类是在程序中会被改变长度的可变字符串.J ...
随机推荐
- [Windows驱动]流媒体驱动开发
从Windows98开始,Windows流媒体驱动遵循Windows Driver Model(WDM)模型并使用Kernel Streaming(KS)组件.Kernel Streaming(KS) ...
- js中获取项目路径的小插件
//立即执行的js (function() { //获取contextPath var contextPath = getContextPath(); //获取basePath var basePat ...
- goldengate 12c 针对oracle 12c配置的主要变化
由于oracle 12c已经是多租户架构,在使用OGG同步的时候,需要考虑下面一些情况 一个 CDB包含多个PDB,源端部署的一个extract可访问所有pdb redo,理论上不需要每个pdb单独配 ...
- goldengate 12c对teradata的支持
OGG12c在2014.4.24发布了对TD的最新支持版本,软件可在此下载:https://edelivery.oracle.com.新版本特性如下: 当前支持TD 14.1的捕获和交付,仍然基于Te ...
- (转)Ratchet教程:创建项目
原文:http://www.w3cplus.com/mobile/how-to-create-mobile-project-width-ratchet.html Ratchet教程:创建项目 ...
- IOS上传图片
//原文地址http://www.cnblogs.com/skyblue/archive/2013/05/08/3067108.html,因为以后要用到,搬来存下// // RequestPostUp ...
- 【OpenGL】法线变换详解(Normal Transform)[转]
http://blog.csdn.net/xiajun07061225/article/details/7762711 在图形学中,同样的一个模型视图变换矩阵可以用来变换点.线.多边形以及其它几何体, ...
- Web 仪表盘
/*********************************************************************** * Web 仪表盘 * 说明: * 之前很久,都想知道 ...
- LeetCode Binary Tree Postorder Traversal(数据结构)
题意: 用迭代法输出一棵二叉树的后序遍历结果. 思路: (1)用两个栈,一个存指针,一个存标记,表示该指针当前已经访问过哪些孩子了. /** * Definition for a binary tre ...
- 遇到double 数目过大,转String变成科学计数法
问题: java中,当double数目过大,转出String时,变成了科学记数法的表示. 总结: 1.项目的存储用的是mysql,mysql的类型和java类型之间存在映射关系,以前关注不多.现在总结 ...