这一章节我们来介绍一下scanner的边界与使用正则表达式扫描。
1.scanner的边界
上一章节我们提到scanner里面有hasNext方法,可以检测是否还有字符串,其实这个就是边界符,检查字符串的边界。
package com.ray.ch11;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;
import java.util.Scanner;
public class Test {
private BufferedReader input = new BufferedReader(new StringReader(
"raylee\n31\n1.77"));
public BufferedReader getInput() {
return input;
}
public void setInput(BufferedReader input) {
this.input = input;
}
public static void main(String[] args) throws IOException {
Test test = new Test();
Scanner scanner = new Scanner(test.getInput());
while (scanner.hasNext()) {
System.out.println(scanner.nextLine());
}
}
}
输出:
raylee
31
1.77
2.使用正则表达式扫描
很多的时候我们都需要扫描和统计日志情况,而且一般日志都是记录在一个txt文件里面的,那么这个时候正则表达式和scanner的配合就相当有效率了,我们看下面的代码:
package com.ray.ch11;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;
import java.util.Scanner;
import java.util.regex.MatchResult;
import java.util.regex.Pattern;
public class Test {
private BufferedReader input = new BufferedReader(new StringReader(
"127.0.0.1@admin@2015-12-01\n" + "127.0.0.2@ray@2015-12-03\n"
+ "127.0.0.31@rose@2015-12-05\n"
+ "127.0.0.41@jack@2015-12-07\n" + "end\n"));
public BufferedReader getInput() {
return input;
}
public void setInput(BufferedReader input) {
this.input = input;
}
public static void main(String[] args) throws IOException {
Test test = new Test();
Scanner scanner = new Scanner(test.getInput());
Pattern pattern = Pattern.compile("(\\d+[.]\\d+[.]\\d+[.]\\d+)" + "@"
+ "([a-z]+)" + "@" + "(\\d{4}-\\d{2}-\\d{2})");
while (scanner.hasNext(pattern)) {
scanner.next(pattern);
MatchResult matchResult = scanner.match();
System.out.println("ip:"+matchResult.group(1));
System.out.println("user:"+matchResult.group(2));
System.out.println("date:"+matchResult.group(3));
}
}
}
输出:
ip:127.0.0.1
user:admin
date:2015-12-01
ip:127.0.0.2
user:ray
date:2015-12-03
ip:127.0.0.31
user:rose
date:2015-12-05
ip:127.0.0.41
user:jack
date:2015-12-07
在上面的代码里面有一个非常需要注意地方就是正则表达式的书写,特别是几个小括号,因为通过几个小括号,才可以把字符串分组出来。如果没有小括号,后面的group(1)group(2)将会抛异常。
总结:这一章节简单讲述了scanner的边界与使用正则表达式扫描。
这一章节就到这里,谢谢。
-----------------------------------
目录
分享到:
相关推荐
驱动程序-扫描仪驱动-明基benq scanner 5000s扫描仪驱动.zip
运行runner.py可以先输入一个正则表达式,再输入若干行文本进行搜索测试。 文件夹“C# Version”中的是等价的C#版本,因为有时需要调试,所以做了一个C#的等效版本。 shoulea 18:48 2011-5-15
Java-Junit单元测试无法使用scanner输入和I-O流的解决方案.docx
http://asprise.com/ 官方的动态库dll,下载比较慢的可以在这里下载 <groupId>com.asprise.imaging</groupId> <artifactId>java-scanner-access-twain [12,) </dependency>
本程序实现了在web页面上,用JAVA的方式,调用扫描仪进行扫描,并上传至远程服务器。并且可以设置扫描范围、扫描精度、以及扫描UI显示等! 该版本在uploadpath参数设置为“http://localhost/xxx.action”,即使用...
本文给大家介绍java使用正则表达式对注册页面进行验证的代码,代码如下所示: package regex; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class ...
java扫描仪源码 Java-Source-Code-Scanner This is just identified version of Javaid. Ref :
EPSON GT-20000 & ES-H7200 扫描仪驱动程序 简体中文语言包 3.4.9 ============================================================ 适用系统:Windows 7/8/8.1/10 32位/64位 适用型号:EPSON GT-20000、ES-H7200 ...
sonar-scanner-2.8
系统工具-文件下载-磁盘扫描器Macrorit Disk Scanner 4.2.0官方版.zip
vue框架插入i18next-scanner自动化生成key的demo (√ ) 解决页面使用$t('title')导致可读性差问题 (√ ) 解决国际化变量命名冲突问题 技术教程: ...
SCX-4650扫描驱动,SCX-4650_4x21S_Series_WIN_Scanner_V3.21.65.03_CDV1.20
AthTek IP-MAC Scanne局域网IP-MAC扫描器英文版支持跨网段VLAN 可扫IP MAC 主机名 工作组 打印机名 ARP和UDP两种扫描方式
Java基础精品课02-变量和运算符录屏6.Scanner的使用.mp4
Vue条形码扫描仪 Vue.js的条形码扫描仪插件 特征 通常在市场上有很多条形码扫描仪。 因此,我们需要处理很多事情才能像对所有扫描仪一样正确地进行此输入。 该插件可以更好地控制扫描输入,因为扫描仪的速度会导致...
明基BenQ扫描仪SCANNER 5560(for XP驱动)
今天小编就为大家分享一篇关于sonar-scanner连接sonarquebe7的sonar.java.binaries问题的解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
使用方法: 1、把:AspriseOCR.dll、DevIL.dll、ILU.dll这三个动态链接库文件放到 windows/system32 下面 2、开发用到aspriseOCR.jar组件 3、开发实例代码:(实例代码)ParseJPEG_withOCR.java 4.CloseWin.exe是销毁...
java扫描仪源码Java扫描仪 Java扫描仪源代码 我在Linux终端上运行它。 在终端中移动到文件所在的适当目录 要在终端中进行编译,请输入:javac ajs6790scanner.java 要执行代码,请输入:java ajs6790scanner
通过sonar扫描java代码,可以帮忙进行代码优化,一般在项目最后上线前都要求进行代码扫描,选用此扫描工具是一个不错的选择,压缩包里包含了sonarqube-5.6.7.zip,sonar-scanner-2.8.zip,Sonar代码扫描环境搭建.docx...