`
李灵晖-raylee
  • 浏览: 135691 次
博客专栏
Group-logo
从头认识java
浏览量:0
文章分类
社区版块
存档分类
最新评论

从头认识java-11.5 扫描输入(2)-scanner的边界与使用正则表达式扫描

 
阅读更多

这一章节我们来介绍一下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

    驱动程序-扫描仪驱动-明基benq scanner 5000s扫描仪驱动.zip

    编译原理--正则表达式文档

    正则表达式是一种强大的文本处理工具,它在编程语言、文本编辑器以及各种解析和搜索应用中被广泛使用。在编译原理中,正则表达式是构建词法分析器(Scanner 或 Lexer)的关键概念,它能简洁地描述语言中的词汇结构。...

    正则表达式、其他API

    正则表达式是一种强大的文本处理工具,能够帮助程序员实现对字符串的有效验证与处理。在多种编程语言中都有应用,包括但不限于Java、Python、JavaScript等。 #### 正则表达式概念 正则表达式是由一系列的字符和特殊...

    Java正则表达式教程

    此外,它可能还会讲解如何在Java程序中使用这些概念,包括在`java.util.Scanner`类和`String`类的方法中应用正则表达式。 总之,理解并熟练运用Java中的正则表达式对于任何Java开发者来说都是一项重要技能。通过...

    基本正则表达式实现regex-v1.0

    运行runner.py可以先输入一个正则表达式,再输入若干行文本进行搜索测试。 文件夹“C# Version”中的是等价的C#版本,因为有时需要调试,所以做了一个C#的等效版本。 shoulea 18:48 2011-5-15

    chapter4_java_字符_正则表达式_

    例如,要创建一个正则表达式来匹配英文单词,我们通常会使用`\b\w+\b`这个模式,这里`\b`表示单词边界,`\w`代表任何字母、数字或下划线,`+`表示一个或多个。 在给定的场景中,我们的任务是输入一串英文字符,然后...

    java笔记之正则表达式

    在Java编程语言中,正则表达式是一种强大的文本处理工具,它允许我们通过简洁的语法来执行复杂的字符串操作。在“java笔记之正则表达式”这篇笔记中,作者深入探讨了正则表达式的基本概念、操作方法以及在Java中的...

    IP-MAC Scanner 局域网IP-MAC扫描器 跨网段VLAN

    《IP-MAC Scanner:局域网IP-MAC扫描利器与跨网段VLAN解析》 在现代网络管理中,了解并掌握局域网内的设备信息是至关重要的。IP-MAC Scanner是一款专门针对这一需求设计的工具,它能够帮助网络管理员快速、准确地...

    tomcat-memshell-scanner.jsp

    Java内存马查杀 这里推荐几款内存马查杀工具 java-memshell-scanner:通过jsp脚本扫描并查杀各类... 只需要将tomcat-memshell-scanner.jsp放在可能被注入内存马的web录下,然后使用浏览器访问即可直接获得扫描结果。

    Java-Junit单元测试无法使用scanner输入和I-O流的解决方案.docx

    ### Java-Junit单元测试无法使用scanner输入和I-O流的解决方案 #### 一、单元测试的概念及重要性 单元测试是一种软件开发中的测试方法,它主要用于验证软件中的最小可测试单元或组件是否按预期工作。在Java编程...

    javatwain 使用扫描仪

    本程序实现了在web页面上,用JAVA的方式,调用扫描仪进行扫描,并上传至远程服务器。并且可以设置扫描范围、扫描精度、以及扫描UI显示等! 该版本在uploadpath参数设置为“http://localhost/xxx.action”,即使用...

    java使用asprise实现扫描

    http://asprise.com/ 官方的动态库dll,下载比较慢的可以在这里下载 <groupId>com.asprise.imaging</groupId> <artifactId>java-scanner-access-twain [12,) </dependency>

    JavaCalculator:使用正则表达式用Java创建的计算器

    - 输入解析:Java提供`Scanner`类用于从标准输入读取用户输入,然后通过正则表达式进行解析。 - 输出结果:计算完成后,结果通常通过`System.out.println()`输出到控制台。 5. **设计模式**: - 单例模式:如果...

    正则表达式学习资料

    9. **使用工具**:Java提供的`java.util.Scanner`类和`String`类的`matches()`, `replaceAll()`, `split()`等方法都支持正则表达式。此外,IDE如Eclipse和IntelliJ IDEA也有内置的正则表达式查找和替换功能。 10. *...

    java代码笔记2010-06-12:java控制台输入各类型类实现;以及判断输入字符串里面是否有数字的两种方法:方法1:转换成字符数组;方法2:正则表达式。

    在Java编程语言中,控制台输入是程序与用户交互的基础,尤其在开发命令行应用程序时。本篇笔记主要探讨了如何在Java中实现控制台输入各种类型的数据,并提供了两种检查字符串中是否包含数字的方法。 首先,Java通过...

    sonar-scanner连接sonarquebe7的sonar.java.binaries问题的解决方案

    2. 删除当前版本的Java插件文件(例如,上述示例中的`sonar-java-plugin-5.01.jar`)。 3. 下载4.10版本的Java插件,并将其替换到插件目录。 4. 重启SonarQube服务,让更改生效。 当然,更长期的解决方案应该是更新...

    java调用扫描仪

    首先,理解Java与硬件设备交互的基础是Java的JNI(Java Native Interface)框架。JNI允许Java代码调用本地(C/C++)代码,从而可以利用操作系统提供的API来访问硬件资源。然而,对于扫描仪这样的设备,直接使用JNI...

    Java中使用正则表达式的一个简单例子及常用正则分享

    在Java中,自JDK 1.4开始,`java.util.regex`包提供了对正则表达式的支持,使得开发者能够方便地使用正则表达式来处理字符串。 在提供的代码示例中,我们看到一个简单的Java程序,用于验证用户输入的电子邮件地址和...

    Java使用正则表达式(regex)匹配中文实例代码

    例如,如果要编写一个Java程序来检查用户输入的是否全部是中文字符,我们可以使用以下的正则表达式和代码示例: ```java @Test public void a1() { Scanner sc = new Scanner(System.in); String input = sc....

    Java正则表达式Pattern和Matcher原理详解

    5. `Scanner`类可以利用正则表达式作为分隔符进行字符串的扫描和分割。 6. `String.split`方法可以利用正则表达式分割字符串。 通过这些知识点,我们可以在Java程序中灵活使用正则表达式来处理字符串,无论是简单...

Global site tag (gtag.js) - Google Analytics