正则表达式在Java语言程序编程时如何从文件中读取数据并运用

正则表达式在Java语言程序编程时如何从文件中读取数据并运用

1.读取文件

读取文件的方式有很多,这里我简单地使用字符串标明路径,通过路径创建文件型变量(File)。

String filepath="src/txt/test.txt";
File file=new File(filepath);
Scanner fileread =new Scanner(file);

这时我们能够从文件以字符串的形式读取内容,通过相关的正则表达式来判断内容是否正确。

2.转换文件信息

我们无法直接从文件里获取数据给程序中的变量,因此我们要暂时存储数据

String text="";
while(fileread.hasNext()) {
	text+=fileread.nextLine();
    text+="\n";
}
fileread.close();

这里为了保证文件读取后转换为String类型时其内容的结构不变(如果你使用过正则语言表达式,你会发现空格是很恶心的东西),所以我们使用Scanner.nextLine()来成行地读取数据。

3.再次提取信息

String s;
Pattern pattern=Pattern.compile(String parser);
Matcher m=pattern.matcher(s);
while(m.find()){
	System.out.println(m.group());
}

这是一段很经典的正则语言匹配代码,parser为字符串类型变量,它表示的是正则语言表达式;而m可以看作是正则表达式在s中索引内容parser的一个方法概括,m.find()代表正则表达式找到了一个匹配的对象,此时如果再m.find()的话正则表达式会去寻找下一个匹配的对象(这一点和next()很像)。在这里要注意的是m.group()返回的是m.find()找到的对象,这就意味着,如果开始时没有m.find(),m.group()是不起作用的;同时,如果只进行一次m.find(),无论输出多少次m.group()都只是最靠近的一次m.find()找到的内容。

4.提取变量内容

在这里,比如说我想提取一段时间,文本内容是

{2021-01-01,2021-02-03}

这里我们进行一下简单约束,我们可以设计一个正则语言把时间提取出来

parser="//{20[0-9][0-9]-[0-9][0-9]-[0-9][0-9],20[0-9][0-9]-[0-9][0-9]-[0-9][0-9]//}";

通过我上述的代码完全可以获得

String message=m.group();

我们再精确提取时间

int year1, year2, month1, month2, day1, day2;
Pattern Year=pattern.compile("20[0-9][0-9]");
Pattern Month=pattern.compile("[0-9][0-9]");
Pattern Day=pattern.compile("[0-9][0-9]");
Matcher year=Year.matcher(message);
Matcher month=Month.matcher(message);
Matcher day=Day.matcher(message);
year.find();//**2021**-01-01,2021-02-03
year1=Integer.parseInt(year.group());
year.find();//2021-01-01,**2021**-02-03
year2=Integer.parseInt(year.group());
month.find();//**20**21-01-01,2021-02-03
month.find();//20**21**-01-01,2021-02-03
month.find();//2021-**01**-01,2021-02-03
month1=Integer.parseInt(month.group());
month.find();//2021-01-**01**,2021-02-03
month.find();//2021-01-01,**20**21-02-03
month.find();//2021-01-01,20**21**-02-03
month.find();//2021-01-01,2021-**02**-03
month2=Integer.parseInt(month.group());
day.find();//**20**21-01-01,2021-02-03
day.find();//20**21**-01-01,2021-02-03
day.find();//2021-**01**-01,2021-02-03
day.find();//2021-01-**01**,2021-02-03
day1=Integer.parseInt(day.group());
day.find();//2021-01-01,**20**21-02-03
day.find();//2021-01-01,20**21**-02-03
day.find();//2021-01-01,2021-**02**-03
day.find();//2021-01-01,2021-02-**03**
day2=Integer.parseInt(day.group());

此时变量数据便提取了出来。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值