public class Test1

{

/*

* 正则表达式:对字符串的常见操作:

* 1.匹配:


其实是用的就是string类中的matches(匹配)方法。

* 2.切割


其实就是使用的String中的split方法

* 3.替换


其实就是 使用的就是String中的replaceAll()方法。。

* 4.获取。


1.将正则规则进行对象的封装。


Pattern p = Pattern.compile("a*b");


2.通过正则对象的matcher方法字符串相关联。获取要对字符串操作的匹配对象Matcher

Matcher 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方法字符串相关联。获取要对字符串操作的匹配对象Matcher

Matcher 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——正则表达式(字符串操作)的更多相关文章

  1. JAVA作业—字符串操作

    ------------恢复内容开始------------ ------------恢复内容开始------------ ------------恢复内容开始------------ ------- ...

  2. Java的字符串操作

    目录 Java的字符串操作 一.不同字符串操作的对比 1.1 C++中const修饰指针 const在星号的左边,是被指向的常量不可变 const在星号的右边,是指针的指向不可变 二. Java字符串 ...

  3. Java的字符串操作一些简单的思考

    Java的字符串操作 1 .1不可变的String String对象事不可变的,String类中的每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,以包含修改后的字符 ...

  4. Java 正则表达式实例操作

    Regular Expression正则表达式,简称RegExp,常规通用的表达式,在多个开发语言中都有它的实现,可以通过正则表达式来快速的检索.匹配.查找.替换字符串中的文本. 简单实例 匹配网址 ...

  5. java类库字符串操作

    在java类库中,java给我们提供了字符串几个特别的操作,分别是String,Stringbuffer,Stringbuilder等.下面就对这几个类做一个简单的介绍.首先,我们先了解一下Strin ...

  6. Java String 字符串操作小结

    // 转载加编辑 -- 21 Apr 2014 1. Java字符串中子串的查找 Java中字符串中子串的查找共有四种方法,如下: 1.int indexOf(String str) :返回第一次出现 ...

  7. Java Script 字符串操作

    JS中常用几种字符串操作: big() small() bold() fontcolor() fontsize() italics() strike() link() charAt() charCod ...

  8. 使用javap分析Java的字符串操作

    我们看这样一行简单的字符串赋值操作的Java代码. String a = "i042416"; 使用命令行将包含了这行代码的Java类反编译查看其字节码: javap -v con ...

  9. 四:Java之字符串操作String、StringBuffer和StringBuilder

    string是我们经经常使用到的一个类型,事实上有时候认为敲代码就是在重复的操作字符串,这是C的特点,在java中.jdk非常好的封装了关于字符串的操作.三个类String .StringBuffer ...

  10. Java基础(一)-- Java对字符串操作大全

    一.Java字符串类基本概念 在JAVA语言中,字符串数据实际上由String类所实现的.Java字符串类分为两类:一类是在程序中不会被改变长度的不变字符串:二类是在程序中会被改变长度的可变字符串.J ...

随机推荐

  1. flash 和 第三方程序交互

    一.flash 端 修改 1.flash cs6  修改脚本 为as3 2.修改 按钮 实例 名 (不是sprite列表中的名字  实例名称 和这个名字 是2个) 3.时间轴上 添加代码 当前选择 A ...

  2. 转:gartner 2014-07 ETL工具象限排名

    ref:  http://www.gartner.com/technology/reprints.do?id=1-1YAXV15&ct=140728&st=sb

  3. Linux下GCC的使用

    1简介 GCC 的意思也只是 GNU C Compiler 而已.经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言:它现在还支持 Ada 语言.C++ 语言.Java 语言.Objective ...

  4. 关于java的static语句块

    声明:转载请注明出处 static{}(即static块),会在类被加载的时候执行且仅会被执行一次,一般用来初始化静态变量和调用静态方法,下面我们详细的讨论一下该语句块的特性及应用. 一.在程序的一次 ...

  5. Oracle的DDL、DML、DCL

    DDL (Data Definition Language 数据定义语言) create table 创建表 alter table 修改表 drop table 删除表 truncate table ...

  6. Python学习路程day3

    set集合 ​set是一个无序且不重复的元素集合,访问速度快,天生解决重复问题 s1 = set() s1.add('luo')​ s2 = set (['luo','wu','wei','ling' ...

  7. 输入任意IP,将IP转化为minion-IP格式(saltstack)

    注1:10.102. 可以替换成其他的,或者手动输入. 注2:minion-可以替换为其他的,或者手动输入. 代码如下(python3): import re # list = [] list1 = ...

  8. 对NSNumber的理解

    1.nsnumber最重要的作用是可以封装任何的值对象,就是说nsnumber对象的类型可以是任何的类型. 如nsnumber *number = @"12" nsnumber * ...

  9. Windows系统定时重开或者关机

    at 6:00 /every:M,T,W,Th,F,S,Su cmd /c shutdown -r -t 60 (每天早上6点自动重启一次) at 0:00 /every:M,T,W,Th,F,S,S ...

  10. 破解 AD_CM#3

    系统 : Windows xp 程序 : AD_CM#3 程序下载地址 :http://pan.baidu.com/s/1skwXPVn 要求 : 编写注册机 使用工具 :IDA & OD 可 ...