Pattern与Matcher类

模式匹配就是检索和指定模式匹配的字符串。java提供了专门用来进行模式匹配的Pattern类和Matcher类,这些类在java.util.regex包中。

模式对象是对正则表达式的封装。

如:

Pattern p;
String regex = "(http://|www)\56?\\w+\56{1}\\w+\56{1}\\p{Alpha}+";
p = Pattern.compile(regex);

模式对象pattern调用matcher(CharSequence input)方法返回一个Matcher对象matcher,成为匹配对象,参数input用于给出matcher要检索的字符串。

Matcher matcher = pattern.matcher(input);

Matcher对象matcher可以使用下列方法寻找字符串input中是否有和模式regex匹配的子序列(regex是创建模式对象pattern时使用的正则表达式)。

public boolean find():寻找input和regex匹配的下一子序列,如果成功该方法返回true,否则返回false.

public boolean matches():matcher调用该方法判断input是否完全和regex匹配。

public boolean lookingAt():matcher调用该方法判断从input的开始位置是否有和regex匹配的子序列。若lookingAt()方法返回true,matcher调用start()方法和end方法可以得到lookingAt()方法找到的匹配模式的子序列在input中的开始位置和结束位置。matcher调用group()方法可以返回lookingAt()方法找到的匹配模式的子序列。

public boolean find(int start):matcher调用该方法判断input从参数start指定位置开始是否有和regex匹配的子序列,参数start为0,该方法和lookingAt()的功能相同。

public String replaceAll(String replacement):matcher调用该方法返回将与regex匹配的字符串被参数replacement替换后的字符串。

public String replaceFirst(String replacement):matcher调用该方法可以返回一个字符串,该字符串是通过把input中第1个与模式regex匹配的字符串替换为参数replacement指定的字符串得到的。

上述部分方法的使用情况如下所示:

import java.util.regex.Matcher;
import java.util.regex.Pattern; public class Test10 { public static void main(String[] args) {
// TODO Auto-generated method stub
Pattern p;
Matcher m;
String regex = "(http://|www)\56?\\w+\56{1}\\w+\56{1}\\p{Alpha}+";
p = Pattern.compile(regex);
String s = "新浪:www.sina.cn,央视:http://www.cctv.com,西农:www.nwsuaf.edu.cn,无:www.edu.cn,百度:www.baidu.com";
System.out.println("原字符串是:" + s);
m = p.matcher(s);
while(m.find())
{
String str = m.group();
System.out.println(str);
}
System.out.println("剔除字符串中的网站网址后得到的字符串:");
String result = m.replaceAll("");
System.out.println(result); } }

运行结果如下所示:

review20的更多相关文章

随机推荐

  1. Spring 事务机制详解(事务的隔离性和传播性)

    原文出处: 陶邦仁 Spring事务机制主要包括声明式事务和编程式事务,此处侧重讲解声明式事务,编程式事务在实际开发中得不到广泛使用,仅供学习参考. Spring声明式事务让我们从复杂的事务处理中得到 ...

  2. jQuery之map()和get() map().get().join意思

    jQuery下有个概念叫“类数组”,比如$( " li " ),当取到一个集合的时候,会有数组的一些属性,但是instancseof Array仍然是false.但是var a=$ ...

  3. 关于Springboot中dubbo整合注意的误区(不对之处请指出)

    这是我的客户端配置! 这是生产的配置, 首先注意一下 scan   我之前尝试这样的客户端配置 然后  果断客户端不能注册接口 @Reference(version="1.0") ...

  4. KVC && KVO 初见

    Look,这是一个很简单的要求,点击Add me,age +1. 想一想的话很简单的,设置一个属性Nsinteger age,点击button add me,直接加1在重新显示Lable就好啦,不过, ...

  5. 原生JavaScript写AJAX

    前端JavaScript: function ajaxGet(url, obj) { var request; if(window.XMLHttpRequest) { request = new XM ...

  6. JS上传图片预览及图片限制

    HTML代码: <form action="__SELF__" method="post" enctype='multipart/form-data'&g ...

  7. LeetCode:旋转链表【61】

    LeetCode:旋转链表[61] 题目描述 给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: 1->2->3->4->5- ...

  8. four application:geocoder widget

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  9. QT 数字图像处理 笔记一

    1.被有符号整数和无符号整数十足的坑了一上午.我在实现图像旋转的时候先把坐标轴中心平移到图像中心:painter.translate(up_x+temp_w,up_y+temp_h);注意这里面各个数 ...

  10. valn 配置

    内核修改: /device drivers/Network device support/MAC-VLAN support 1.创建目录和文件#cd /usr#mkdir vlan#cd vlan#c ...