这一章节我们来介绍一下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
正则表达式是一种强大的文本处理工具,它在编程语言、文本编辑器以及各种解析和搜索应用中被广泛使用。在编译原理中,正则表达式是构建词法分析器(Scanner 或 Lexer)的关键概念,它能简洁地描述语言中的词汇结构。...
正则表达式是一种强大的文本处理工具,能够帮助程序员实现对字符串的有效验证与处理。在多种编程语言中都有应用,包括但不限于Java、Python、JavaScript等。 #### 正则表达式概念 正则表达式是由一系列的字符和特殊...
此外,它可能还会讲解如何在Java程序中使用这些概念,包括在`java.util.Scanner`类和`String`类的方法中应用正则表达式。 总之,理解并熟练运用Java中的正则表达式对于任何Java开发者来说都是一项重要技能。通过...
运行runner.py可以先输入一个正则表达式,再输入若干行文本进行搜索测试。 文件夹“C# Version”中的是等价的C#版本,因为有时需要调试,所以做了一个C#的等效版本。 shoulea 18:48 2011-5-15
例如,要创建一个正则表达式来匹配英文单词,我们通常会使用`\b\w+\b`这个模式,这里`\b`表示单词边界,`\w`代表任何字母、数字或下划线,`+`表示一个或多个。 在给定的场景中,我们的任务是输入一串英文字符,然后...
在Java编程语言中,正则表达式是一种强大的文本处理工具,它允许我们通过简洁的语法来执行复杂的字符串操作。在“java笔记之正则表达式”这篇笔记中,作者深入探讨了正则表达式的基本概念、操作方法以及在Java中的...
《IP-MAC Scanner:局域网IP-MAC扫描利器与跨网段VLAN解析》 在现代网络管理中,了解并掌握局域网内的设备信息是至关重要的。IP-MAC Scanner是一款专门针对这一需求设计的工具,它能够帮助网络管理员快速、准确地...
Java内存马查杀 这里推荐几款内存马查杀工具 java-memshell-scanner:通过jsp脚本扫描并查杀各类... 只需要将tomcat-memshell-scanner.jsp放在可能被注入内存马的web录下,然后使用浏览器访问即可直接获得扫描结果。
### Java-Junit单元测试无法使用scanner输入和I-O流的解决方案 #### 一、单元测试的概念及重要性 单元测试是一种软件开发中的测试方法,它主要用于验证软件中的最小可测试单元或组件是否按预期工作。在Java编程...
本程序实现了在web页面上,用JAVA的方式,调用扫描仪进行扫描,并上传至远程服务器。并且可以设置扫描范围、扫描精度、以及扫描UI显示等! 该版本在uploadpath参数设置为“http://localhost/xxx.action”,即使用...
http://asprise.com/ 官方的动态库dll,下载比较慢的可以在这里下载 <groupId>com.asprise.imaging</groupId> <artifactId>java-scanner-access-twain [12,) </dependency>
- 输入解析:Java提供`Scanner`类用于从标准输入读取用户输入,然后通过正则表达式进行解析。 - 输出结果:计算完成后,结果通常通过`System.out.println()`输出到控制台。 5. **设计模式**: - 单例模式:如果...
9. **使用工具**:Java提供的`java.util.Scanner`类和`String`类的`matches()`, `replaceAll()`, `split()`等方法都支持正则表达式。此外,IDE如Eclipse和IntelliJ IDEA也有内置的正则表达式查找和替换功能。 10. *...
在Java编程语言中,控制台输入是程序与用户交互的基础,尤其在开发命令行应用程序时。本篇笔记主要探讨了如何在Java中实现控制台输入各种类型的数据,并提供了两种检查字符串中是否包含数字的方法。 首先,Java通过...
2. 删除当前版本的Java插件文件(例如,上述示例中的`sonar-java-plugin-5.01.jar`)。 3. 下载4.10版本的Java插件,并将其替换到插件目录。 4. 重启SonarQube服务,让更改生效。 当然,更长期的解决方案应该是更新...
首先,理解Java与硬件设备交互的基础是Java的JNI(Java Native Interface)框架。JNI允许Java代码调用本地(C/C++)代码,从而可以利用操作系统提供的API来访问硬件资源。然而,对于扫描仪这样的设备,直接使用JNI...
在Java中,自JDK 1.4开始,`java.util.regex`包提供了对正则表达式的支持,使得开发者能够方便地使用正则表达式来处理字符串。 在提供的代码示例中,我们看到一个简单的Java程序,用于验证用户输入的电子邮件地址和...
例如,如果要编写一个Java程序来检查用户输入的是否全部是中文字符,我们可以使用以下的正则表达式和代码示例: ```java @Test public void a1() { Scanner sc = new Scanner(System.in); String input = sc....
5. `Scanner`类可以利用正则表达式作为分隔符进行字符串的扫描和分割。 6. `String.split`方法可以利用正则表达式分割字符串。 通过这些知识点,我们可以在Java程序中灵活使用正则表达式来处理字符串,无论是简单...