一、前言
本次学习应用于文本处理方面,主要的功能是为了实现给文本字符后加符号
,本次以斜杠和空格为例。
大部分编程语言 、数据库、文本编辑器、开发环境都支持正则表达式
。
正如他的名字一样是描述了一个规则,通过这个规则可以匹配一类字符串。
学习正则表达式很大程度上就是学习正则表达式的语法规则 。
二、正则表达式语法
1)普通字符
- 字母、数字、汉字、下划线、以及没有特殊定义的标点符号,都是“普通字符”。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符。
- 简单的转义字符
2) 标准字符集合
能够与 ‘多种字符’ 匹配的表达式注意区分大小写,大写是相反的意思 :
3)自定义字符集合
[ ]
方括号匹配方式,能够匹配方括号中任意一个字符
正则表达式的特殊符号,被包含到中括号中,则失去特殊意义,除了^,-
之外。
标准字符集合,除小数点外,如果被包含于中括号,自定义字符集合将包含该集合。比如:
[\d.\-+]
将匹配:数字、小数点、+、-
三、编程学习
1)任务要求
- 完成一个 java application应用程序,实现文本文档的读取和写入,将修改后(给文本字符后添加空格和斜杠)的新内容存入到新的文本文档中。
- 应用数据流的相关知识,使用
BufferedReader/BufferedWriter
处理流:将Reader/Writer对象进行包装,增加缓存功能,提高读写效率。使用InputStreamReader/OutputStreamWriter
处理流:将字节流对象转化成字符流对象。
2)程序代码
- 1.添加空格(java IO流)
/* 项目名称:Task_Shao
* 创建时间:2019年1月28日
* 创建者:Administrator
* 创建地点:hb
* 功能:添加空格(java IO流)
*/
import java.io.*;//导入java.io包中的所有类
import java.util.*;//导入java.util包中的Scanner类
public class add_slash{//创建类名
public static void main(String[] args) throws Exception{//程序主函数入口
Scanner s = new Scanner(System.in);//获取键盘输入并赋值给s字符串
Scanner t = new Scanner(System.in);//获取键盘输入并赋值给t字符串
System.out.println("请输入想要打开的文本文档:");//输出提示信息
String a = s.nextLine();//定义字符串变量,并赋值为用户输入的信息
System.out.println("请输入想要写入内容的文本文档:");//输出提示信息
String b = t.nextLine();//定义字符串变量,并赋值为用户输入的信息
File file=new File(b);//创建待写入文件
if(!file.exists()) {//若指定路径下该文件不存在执行if语句
file.createNewFile();//则在指定路径下新建该文件
}
//输入的是TXT文档则继续往下执行
try{//将逻辑语句用try包起来
int i=0;//新建行号的符号i
String string=null;//新建空字符串
InputStreamReader isr=new InputStreamReader(new FileInputStream(a));//读入数据流方式
BufferedReader read=new BufferedReader(isr);//写入数据流方式
OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream(file));//读入数据流方式
BufferedWriter write=new BufferedWriter(osw);//写入数据流方式
while((string = read.readLine())!= null) {//readLine()方法, 用于读取一行,只要读取内容不为空就一直执行
for(i = 0;i < string.length();i++){//for循环的条件,当i小于该行长度时就一直循环并自增
write.append(string.charAt(i));//在新文档中逐次插入每一个字符
write.append(" ");//在每一个字符后插入斜杠/
}
if(i == string.length()){//if条件语句
write.append("\r\n");//当i等于一行的最大长度时就进行换行操作
}
}
write.close();//关闭流
read.close();//关闭流
System.out.println("所需内容已写入指定文档!");//输出提示信息
}
catch(Exception e) {//当代码异常时用catch捕获异常
e.printStackTrace();//printStackTrace()方法是打印异常信息在程序中出错的位置及原因
}
}
}
- 2.添加斜杠(java IO流)
/* 项目名称:Task_Shao
* 创建时间:2019年1月28日
* 创建者:Administrator
* 创建地点:hb
* 功能:添加斜杠(java IO流)
*/
import java.io.*;//导入java.io包中的所有类
import java.util.*;//导入java.util包中的Scanner类
public class add_slash{//创建类名
public static void main(String[] args) throws Exception{//程序主函数入口
Scanner s = new Scanner(System.in);//获取键盘输入并赋值给s字符串
Scanner t = new Scanner(System.in);//获取键盘输入并赋值给t字符串
System.out.println("请输入想要打开的文本文档:");//输出提示信息
String a = s.nextLine();//定义字符串变量,并赋值为用户输入的信息
System.out.println("请输入想要写入内容的文本文档:");//输出提示信息
String b = t.nextLine();//定义字符串变量,并赋值为用户输入的信息
File file=new File(b);//创建待写入文件
if(!file.exists()) {//若指定路径下该文件不存在执行if语句
file.createNewFile();//则在指定路径下新建该文件
}
//输入的是TXT文档则继续往下执行
try{//将逻辑语句用try包起来
int i=0;//新建行号的符号i
String string=null;//新建空字符串
InputStreamReader isr=new InputStreamReader(new FileInputStream(a));//读入数据流方式
BufferedReader read=new BufferedReader(isr);//写入数据流方式
OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream(file));//读入数据流方式
BufferedWriter write=new BufferedWriter(osw);//写入数据流方式
while((string = read.readLine())!= null) {//readLine()方法, 用于读取一行,只要读取内容不为空就一直执行
for(i = 0;i < string.length();i++){//for循环的条件,当i小于该行长度时就一直循环并自增
write.append(string.charAt(i));//在新文档中逐次插入每一个字符
write.append("/");//在每一个字符后插入斜杠/
}
if(i == string.length()){//if条件语句
write.append("\r\n");//当i等于一行的最大长度时就进行换行操作
}
}
write.close();//关闭流
read.close();//关闭流
System.out.println("所需内容已写入指定文档!");//输出提示信息
}
catch(Exception e) {//当代码异常时用catch捕获异常
e.printStackTrace();//printStackTrace()方法是打印异常信息在程序中出错的位置及原因
}
}
}
3)执行结果(以西游记文本为例)
- 1.添加空格
- 2.添加斜杠
四、总结(常用的正则表达式)
- 开发环境和文本编辑器中使用正则
– eclipse
– Notepad++
– Editplus
– UltraEdit
- 数据库中也可以使用正则
– Mysql5.5以上
– Oracle10g以上
JAVA程序中也会使用到正则表达式
API中相关类:相关类位于:java.util.regex
包下面
• 类 Pattern
:
– 正则表达式的编译表示形式。
– Pattern p = Pattern.comp
ile(r,int);
//建立正则表达式,并启用相应模式
• 类 Matcher
:
– 通过解释 Pattern
对 character sequence
执行匹配操作的引擎
– Matcher m = p.matcher(str);
//匹配str字符串
参考链接:
https://blog.csdn.net/xiachaoyang/article/details/79067460