通常会有这种需求: 在文档中搜索有规律的字符串,然后进行统计或者替换。Java.util.regex包下的Pattern和Matcher这两个类提供了通过正则表达式来匹配查询,甚至替换的功能。那么我们接下来就举个栗子吧 :

栗子1:查找文件中以img_数字.png格式的字符串,并在前面添加路径: /test/img/

package test;

import java.io.File;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.io.FileUtils; public class PatternTest { private static final String CONSTSTRING = "<a><img src='img_01.png'/></a>";
public static void main(String[] args) throws Exception {
File file = new File("C:\\Users\\Admin\\Desktop\\test.txt");
FileUtils.writeStringToFile(file, CONSTSTRING);
String str = FileUtils.readFileToString(file, "UTF-8");
StringBuffer stringBuffer = new StringBuffer();
//设置Pattern的正则表达式
Pattern p = Pattern.compile("img_[0-9]+\\u002png");
//按规则匹配
Matcher m = p.matcher(str);
while(m.find()){
//将匹配到并替换后的字符串以及前面的字符串添加到StringBuffer中
m.appendReplacement(stringBuffer, "/test/img/"+m.group());
System.out.println(stringBuffer.toString());
System.out.println();
}
//将匹配到的字符串之后的字符串添加到StringBuffer中
m.appendTail(stringBuffer);
FileUtils.writeStringToFile(file, stringBuffer.toString(), "UTF-8");
}
}

  其实这个问题有个简单方法,这里扩展一下 :

package test;

import java.io.File;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.io.FileUtils; public class PatternTest { private static final String CONSTSTRING = "<a><img src='img_01.png'/></a>";
public static void main(String[] args) throws Exception {
File file = new File("C:\\Users\\JD07201\\Desktop\\test.txt");
FileUtils.writeStringToFile(file, CONSTSTRING);
String str = FileUtils.readFileToString(file, "UTF-8");
str = str.replace("img_", "/test/img/"+"img_");
FileUtils.writeStringToFile(file, str, "UTF-8");
}
}

  这个方法的前提是匹配条件必须只能映射到目标字符串,在这里就是指匹配条件"img_"必须等价于 "img_[0-9]+\\u002png",否则就有可能将不符合条件的字符串也给替换了。

  

Java 正则表达式 Pattern & Matcher的更多相关文章

  1. java正则表达式Pattern和Matcher

    java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. 1.简介:  java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. ...

  2. JAVA正则表达式 Pattern和Matcher

    java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. 1.简介:  java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. ...

  3. JAVA正则表达式 Pattern和Matcher(转)

    1.简介: java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher.        首先一个Pattern实例订制了一 ...

  4. JAVA正则表达式 Pattern和Matcher类

    java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. 1.简介:  java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. ...

  5. Java正则表达式Pattern和Matcher类

    转载自--小鱼儿是坏蛋(原文链接) 概述 Pattern类的作用在于编译正则表达式后创建一个匹配模式.    Matcher类使用Pattern实例提供的模式信息对正则表达式进行匹配 Pattern类 ...

  6. 正则表达式 Pattern & Matcher

    1 compile and pattern Pattern类用于创建一个正则表达式,也可以说创建一个匹配模式,它的构造方法是私有的,不可以直接创建,但可以通过Pattern.complie(Strin ...

  7. Java正则表达式之Matcher介绍

    Matcher方法如下: Matcher方法如下: Matcher appendReplacement(StringBuffer sb, String replacement) 将当前匹配子串替换为指 ...

  8. Java正则表达式之Matcher类的find和matches方法的区别

    讨论整个问题之前,先看个例子:   从上面的例子可以看出 matches()是整个字符串完全匹配时,才会返回true 而find()则只需要字符串中,找到某部分的子字符串匹配则返回true       ...

  9. JAVA 正则 Pattern 和 Matcher

    java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. 1.简介:  java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. ...

随机推荐

  1. [LintCode] 带重复元素的排列

    递归实现: class Solution { public: /** * @param nums: A list of integers. * @return: A list of unique pe ...

  2. Kubernetes初探:原理及实践应用

    总体概览 如下图所示是我初步阅读文档和源代码之后整理的总体概览,基本上可以从如下三个维度来认识Kubernetes. 操作对象 Kubernetes以RESTFul形式开放接口,用户可操作的REST对 ...

  3. Spring 框架整合Struts2 框架和 Hibernate 框架

    1. Spring 框架整合 Struts2 框架 // [第一种整合方式(不推荐)](http://www.cnblogs.com/linkworld/p/7718274.html) // 从 Se ...

  4. Java 语言基础之语句

    程序的四种流程控制结构: 顺序结构 判断结构 : if 语句 选择结构 : switch 语句 循环结构 : while 语句, do...while 语句, for 语句 以下主要分析循环结构: w ...

  5. Tickets---hdu1260(简单dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1260 题意是有n个人排队买票,第 i 个人买票所需要的时间是a[i],这个人和 i-1 或者 i+1 ...

  6. 7.Insert Methods-官方文档摘录

    总结 列举insert插入方法 MongoDB provides the following methods for inserting documents into a collection: db ...

  7. tomcat 介绍

    Tomcat简介 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun和其他一些公司及个人共同开发 ...

  8. Java集合(7):HashMap

    一.HashMap介绍 HashMap是基于哈希表的 Map 接口的实现,以key-value的形式存在.在HashMap中,key-value总是会当做一个整体来处理,系统会根据hash算法来来计算 ...

  9. Java基础教程:Lambda表达式

    Java基础教程:Lambda表达式 本文部分内容引用自OneAPM:http://blog.oneapm.com/apm-tech/226.html 引入Lambda Java 是一流的面向对象语言 ...

  10. 微信小程序学习笔记(4)--------框架之逻辑层

    逻辑层 逻辑层(App Service):小程序框架的逻辑层是由JavaScript编写的,逻辑层将数据进行处理后发送给视图层,同时接受视图层的事件反馈. App进行程序注册,Page进行页面注册 g ...