Java 正则表达式 Pattern & Matcher
通常会有这种需求: 在文档中搜索有规律的字符串,然后进行统计或者替换。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的更多相关文章
- java正则表达式Pattern和Matcher
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. 1.简介: java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. ...
- JAVA正则表达式 Pattern和Matcher
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. 1.简介: java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. ...
- JAVA正则表达式 Pattern和Matcher(转)
1.简介: java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher. 首先一个Pattern实例订制了一 ...
- JAVA正则表达式 Pattern和Matcher类
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. 1.简介: java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. ...
- Java正则表达式Pattern和Matcher类
转载自--小鱼儿是坏蛋(原文链接) 概述 Pattern类的作用在于编译正则表达式后创建一个匹配模式. Matcher类使用Pattern实例提供的模式信息对正则表达式进行匹配 Pattern类 ...
- 正则表达式 Pattern & Matcher
1 compile and pattern Pattern类用于创建一个正则表达式,也可以说创建一个匹配模式,它的构造方法是私有的,不可以直接创建,但可以通过Pattern.complie(Strin ...
- Java正则表达式之Matcher介绍
Matcher方法如下: Matcher方法如下: Matcher appendReplacement(StringBuffer sb, String replacement) 将当前匹配子串替换为指 ...
- Java正则表达式之Matcher类的find和matches方法的区别
讨论整个问题之前,先看个例子: 从上面的例子可以看出 matches()是整个字符串完全匹配时,才会返回true 而find()则只需要字符串中,找到某部分的子字符串匹配则返回true ...
- JAVA 正则 Pattern 和 Matcher
java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. 1.简介: java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包. ...
随机推荐
- iOS ipad archives 时候 不显示icon
设置一下 plist文件
- java.lang.IllegalArgumentException: Failed to decrypt.
加密失败. 附加信息: org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Co ...
- :nth- 从1开始计数,其他如:eq()、 index()从0开始计数
因为jQuery的实现:nth-是严格来自CSS规范,n值是“1-indexed”,也就是说,从1开始计数. 对于所有其他选择器表达式比如:eq() 或 :even ,jQuery遵循JavaScri ...
- mysql 中事件
# 创建存储过程 /* delimiter // create procedure test() begin update test SET name = date_format(now(),'%Y- ...
- explorer.exe中发生未处理的win32异常
explorer.exe中发生未处理的win32异常的错误提示,是windows系统比较常见的错误事件,多数在开机遇到,也有在电脑使用过程中遇到. 了解explorer.exe进程 从百度百科了解到, ...
- 创建自己的java类库并加以调用方法
第一次搞博客,心里有点发慌,记录一下:2018/2/1/ 21:33 今天Think In Java第4版 中文版(英文看着可能很耗时),看到了6.1.3 定制工具库这一章节,之前作者调用自己的类 ...
- CXF 框架
1. 搭建服务端(查询天气) // 1. 引入cxf的 jar 包; // 2. 创建 SEI 接口, 需要加入注解: @WebService @WebService public interface ...
- Type Java compiler level does not match the version of the installed Java project facet.项目内容没错但是项目上报错,不影响运行
1.Window->Show View->Problems 2.在项目上右键properties->project Facets->修改右侧的version 保持一致 3.w ...
- ovs ovn 学习资料
0.A Primer on OVN http://blog.spinhirne.com/2016/09/a-primer-on-ovn.html 1.Open Virtual Networking W ...
- 开发微信公众平台--新建新浪云sae部署server
创建新浪云计算应用 申请账号 我们使用SAE新浪云计算平台作为server资源.而且申请PHP环境+MySQL数据库作为程序执行环境. 申请地址:百度搜sae ,使用新浪微博账号能够直接登录SAE,登 ...