Java 正则表达式、方法、stream、file、IO、Scanner类

一、Java 正则表达式:

        正则表达式定了字符串的模式,用来搜索、编辑或处理文本。正则表达式的实例及描述:

正则表达式

描述

this is text

匹配字符串 "this is text"

this\s+is\s+text

注意字符串中的 \s+。

匹配单词 "this" 后面的 \s+ 可以匹配多个空格,之后匹配 is 字符串,再之后 \s+ 匹配多个空格然后再跟上 text 字符串。

可以匹配这个实例:this is text

^\d+(\.\d+)?

^ 定义了以什么开始

\d+ 匹配一个或多个数字

? 设置括号内的选项是可选的

\. 匹配 "."

可以匹配的实例:"5", "1.5" 和 "2.21"。

        正则表达式语法:

        在 Java 中,\\ 表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。

字符

说明

\

将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如, n匹配字符 n\n 匹配换行符。序列 \\\\ 匹配 \\ ,\\( 匹配 (

^

匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与"\n"或"\r"之后的位置匹配。

$

匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与"\n"或"\r"之前的位置匹配。

*

零次或多次匹配前面的字符或子表达式。例如,zo* 匹配"z"和"zoo"。* 等效于 {0,}。

+

一次或多次匹配前面的字符或子表达式。例如,"zo+"与"zo"和"zoo"匹配,但与"z"不匹配。+ 等效于 {1,}。

?

零次或一次匹配前面的字符或子表达式。例如,"do(es)?"匹配"do"或"does"中的"do"。? 等效于 {0,1}。

{n}

是非负整数。正好匹配 n 次。例如,"o{2}"与"Bob"中的"o"不匹配,但与"food"中的两个"o"匹配。

{n,}

是非负整数。至少匹配 次。例如,"o{2,}"不匹配"Bob"中的"o",而匹配"foooood"中的所有 o。"o{1,}"等效于"o+"。"o{0,}"等效于"o*"。

{n,m}

m 和 n 是非负整数,其中 n <= m。匹配至少 n 次,至多 m 次。例如,"o{1,3}"匹配"fooooood"中的头三个 o。'o{0,1}' 等效于 'o?'。注意:您不能将空格插入逗号和数字之间。

?

当此字符紧随任何其他限定符(*、+、?、{n}、{n,}、{n,m})之后时,匹配模式是"非贪心的"。"非贪心的"模式匹配搜索到的、尽可能短的字符串,而默认的"贪心的"模式匹配搜索到的、尽可能长的字符串。例如,在字符串"oooo"中,"o+?"只匹配单个"o",而"o+"匹配所有"o"。

.

匹配除"\r\n"之外的任何单个字符。若要匹配包括"\r\n"在内的任意字符,请使用诸如"[\s\S]"之类的模式。

(pattern)

匹配 pattern 并捕获该匹配的子表达式。可以使用 $0…$9 属性从结果"匹配"集合中检索捕获的匹配。若要匹配括号字符 ( ),请使用"\("或者"\)"。

(?:pattern)

匹配 pattern 但不捕获该匹配的子表达式,即它是一个非捕获匹配,不存储供以后使用的匹配。这对于用"or"字符 (|) 组合模式部件的情况很有用。例如,'industr(?:y|ies) 是比 'industry|industries' 更经济的表达式。

(?=pattern)

执行正向预测先行搜索的子表达式,该表达式匹配处于匹配 pattern 的字符串的起始点的字符串。它是一个非捕获匹配,即不能捕获供以后使用的匹配。例如,'Windows (?=95|98|NT|2000)' 匹配"Windows 2000"中的"Windows",但不匹配"Windows 3.1"中的"Windows"。预测先行不占用字符,即发生匹配后,下一匹配的搜索紧随上一匹配之后,而不是在组成预测先行的字符后。

(?!pattern)

执行反向预测先行搜索的子表达式,该表达式匹配不处于匹配 pattern 的字符串的起始点的搜索字符串。它是一个非捕获匹配,即不能捕获供以后使用的匹配。例如,'Windows (?!95|98|NT|2000)' 匹配"Windows 3.1"中的 "Windows",但不匹配"Windows 2000"中的"Windows"。预测先行不占用字符,即发生匹配后,下一匹配的搜索紧随上一匹配之后,而不是在组成预测先行的字符后。

x|y

匹配 x 或 y。例如,'z|food' 匹配"z"或"food"。'(z|f)ood' 匹配"zood"或"food"。

[xyz]

字符集。匹配包含的任一字符。例如,"[abc]"匹配"plain"中的"a"。

[^xyz]

反向字符集。匹配未包含的任何字符。例如,"[^abc]"匹配"plain"中"p","l","i","n"。

[a-z]

字符范围。匹配指定范围内的任何字符。例如,"[a-z]"匹配"a"到"z"范围内的任何小写字母。

[^a-z]

反向范围字符。匹配不在指定的范围内的任何字符。例如,"[^a-z]"匹配任何不在"a"到"z"范围内的任何字符。

\b

匹配一个字边界,即字与空格间的位置。例如,"er\b"匹配"never"中的"er",但不匹配"verb"中的"er"。

\B

非字边界匹配。"er\B"匹配"verb"中的"er",但不匹配"never"中的"er"。

\cx

匹配 x 指示的控制字符。例如,\cM 匹配 Control-M 或回车符。x 的值必须在 A-Z 或 a-z 之间。如果不是这样,则假定 c 就是"c"字符本身。

\d

数字字符匹配。等效于 [0-9]。

\D

非数字字符匹配。等效于 [^0-9]。

\f

换页符匹配。等效于 \x0c 和 \cL。

\n

换行符匹配。等效于 \x0a 和 \cJ。

\r

匹配一个回车符。等效于 \x0d 和 \cM。

\s

匹配任何空白字符,包括空格、制表符、换页符等。与 [ \f\n\r\t\v] 等效。

\S

匹配任何非空白字符。与 [^ \f\n\r\t\v] 等效。

\t

制表符匹配。与 \x09 和 \cI 等效。

\v

垂直制表符匹配。与 \x0b 和 \cK 等效。

\w

匹配任何字类字符,包括下划线。与"[A-Za-z0-9_]"等效。

\W

与任何非单词字符匹配。与"[^A-Za-z0-9_]"等效。

\xn

匹配 n,此处的 n 是一个十六进制转义码。十六进制转义码必须正好是两位数长。例如,"\x41"匹配"A"。"\x041"与"\x04"&"1"等效。允许在正则表达式中使用 ASCII 代码。

\num

匹配 num,此处的 num 是一个正整数。到捕获匹配的反向引用。例如,"(.)\1"匹配两个连续的相同字符。

\n

标识一个八进制转义码或反向引用。如果 \n 前面至少有 n 个捕获子表达式,那么 n 是反向引用。否则,如果 n 是八进制数 (0-7),那么 n 是八进制转义码。

\nm

标识一个八进制转义码或反向引用。如果 \nm 前面至少有 nm 个捕获子表达式,那么 nm 是反向引用。如果 \nm 前面至少有 n 个捕获,则 n 是反向引用,后面跟有字符 m。如果两种前面的情况都不存在,则 \nm 匹配八进制值 nm,其中 和 m 是八进制数字 (0-7)。

\nml

当 n 是八进制数 (0-3),m 和 l 是八进制数 (0-7) 时,匹配八进制转义码 nml

\un

匹配 n,其中 n 是以四位十六进制数表示的 Unicode 字符。例如,\u00A9 匹配版权符号 (©)。

二、Java方法:

        Java方法是语句的集合,一起执行一个功能。方法是解决一类问题的步骤的有序组合;方法包含于类或对象中;方法在程序中被创建,在其他地方被引用。

        方法的命名规则:方法的名字的第一个单词应以小写字母做开头,后面的单词则用大写字母开头写。不使用连接符;下划线可能出现在JUnit测试方法名称中用以分隔名称的逻辑组件。

方法的定义:

修饰符 返回值类型 方法名(参数类型 参数名){

 ...

 方法体

 ...

return 返回值;

}

其中修饰符:可选,告诉编译器如何调用该方法,定义该方法的访问类型;返回值,有些方法有返回值,有些方法没有返回值;当方法被调用时,传递值给参数,方法可以有参数,也可以不包含参数;方法体包含具体的雨具,定义该方法的功能。

三、Java stream、file、IO、Scanner类:

Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。

18.1、读取控制台输入:

为了获得一个绑定到控制的字符流,用BufferedReader 对象创建字符流,BufferedReader的基本语法:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

使用read()方法读取一个字符:

int read( ) throws IOException

使用readLine()方法读取一个字符串:

String readLine( ) throws IOException

18.2、控制台输出:

OutputStream类write()方法用来往控制台写操作:

void write(int byteval)

18.3、读写文件:

 FileInputStream流用于从文件读取数据,它的对象可以用关键字new来创建:

InputStream f = new FileInputStream("C:/java/hello");

File f = new File("C:/java/hello");

InputStream in = new FileInputStream(f);

创建InputStream对象,使用下面的方法读取流或其他流操作:

序号

方法及描述

1

public void close() throws IOException{}
关闭此文件输入流并释放与此流有关的所有系统资源。抛出IOException异常。

2

protected void finalize()throws IOException {}
这个方法清除与该文件的连接。确保在不再引用文件输入流时调用其 close 方法。抛出IOException异常。

3

public int read(int r)throws IOException{}
这个方法从 InputStream 对象读取指定字节的数据。返回为整数值。返回下一字节数据,如果已经到结尾则返回-1。

4

public int read(byte[] r) throws IOException{}
这个方法从输入流读取r.length长度的字节。返回读取的字节数。如果是文件结尾则返回-1。

5

public int available() throws IOException{}
返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取的字节数。返回一个整数值。

FileOutputStream流用来创建一个文件并向文件中写入数据。创建输出流对象:

OutputStream f = new FileOutputStream("C:/java/hello")

File f = new File("C:/java/hello");

OutputStream fOut = new FileOutputStream(f);

创建OutputStream 对象后,使用下面的方法写入流或其他流操作:

序号

方法及描述

1

public void close() throws IOException{}
关闭此文件输入流并释放与此流有关的所有系统资源。抛出IOException异常。

2

protected void finalize()throws IOException {}
这个方法清除与该文件的连接。确保在不再引用文件输入流时调用其 close 方法。抛出IOException异常。

3

public void write(int w)throws IOException{}
这个方法把指定的字节写到输出流中。

4

public void write(byte[] w)
把指定数组中w.length长度的字节写到OutputStream中。

18.4、文件和I/O:

File Class类、FileReader Class类、FileWriter Class类

18.5、创建目录:

mkdir()-创建一个文件夹,成功返回true,失败返回false;

mkdirs()-创建一个文件夹和它所有父文件夹。

import java.io.File;

public class CreateDir {

public static void main(String[] args) {

String dirname = "/tmp/user/java/bin";

File d = new File(dirname);

// 现在创建目录

d.mkdirs();

}

}

18.6、读取目录:

通过list()方法,来提取它包含的文件和文件夹的列表:

import java.io.File;

public class DirList {

public static void main(String args[]) {

String dirname = "/tmp";

File f1 = new File(dirname);

if (f1.isDirectory()) {

System.out.println("目录 " + dirname);

String s[] = f1.list();

for (int i = 0; i < s.length; i++) {

File f = new File(dirname + "/" + s[i]);

if (f.isDirectory()) {

System.out.println(s[i] + " 是一个目录");

} else {

System.out.println(s[i] + " 是一个文件");

}

}

} else {

System.out.println(dirname + " 不是一个目录");

 }

}

}

18.7、删除目录和文件:

删除文件可以使用 java.io.File.delete() 方法。

import java.io.File;

public class DeleteFileDemo {

public static void main(String[] args) {

// 这里修改为自己的测试目录

File folder = new File("/tmp/java/");

 deleteFolder(folder);

}

// 删除文件及目录

public static void deleteFolder(File folder) {

File[] files = folder.listFiles();

if (files != null) {

for (File f : files) {

if (f.isDirectory()) {

deleteFolder(f);

} else {

f.delete();

}

 }

}

folder.delete();

}

}

18.8、获取用户输入:

Java.util.Scanner类用来获取用户的输入(通过Scanner类的next()和nextline()方法获取输入的字符串)。Scanner对象的基本语法:

Scanner s = new Scanner(System.in);

使用next()方法:

import java.util.Scanner;

public class ScannerDemo {

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);

// 从键盘接收数据

// next方式接收字符串

System.out.println("next方式接收:");

// 判断是否还有输入

 if (scan.hasNext()) {

String str1 = scan.next();

System.out.println("输入的数据为:" + str1);

}

 scan.close();

}

}

使用nextline()方法:

import java.util.Scanner;

public class ScannerDemo {

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);

// 从键盘接收数据

// nextLine方式接收字符串

System.out.println("nextLine方式接收:");

// 判断是否还有输入

if (scan.hasNextLine()) {

String str2 = scan.nextLine();

System.out.println("输入的数据为:" + str2);

}

scan.close();

}

 }

next()和nextline()的区别:

next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格,next()方法会自动将其去掉,只有输入有效字符后才将其后面输入的空格作为分隔符或者结束符,next()不能得到带有空格的字符串;nextline()以enter为结束符,即nextline()方法返回的是输入回车之前的所有字符,可以获得空格。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/153629.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决Python中文乱码问题的策略与技巧

目录 引言 一、解决Python中文乱码问题的策略 1、使用合适的编码方式 2、设置Python解释器的编码环境变量 3、使用合适的库和框架 4. 对数据进行正确的处理和格式化 5、使用合适的打印和显示方式 6. 考虑使用多语言支持 二、解决Python中文乱码问题的技巧 1、避免使用…

深度学习基础知识——从人工神经网络开始

一、介绍 您知道第一个神经网络是在 20 世纪 50 年代初发现的吗&#xff1f; 深度学习 (DL) 和神经网络 (NN) 目前正在推动本世纪一些最巧妙的发明。他们从数据和环境中学习的令人难以置信的能力使他们成为机器学习科学家的首选。 深度学习和神经网络是自动驾驶汽车、图像识别软…

GitLab的个人仓库转移到团队仓库

文章目录 一、Gitlab权限二、转移2.1、编辑个人仓库2.2、Transfer project2.3、切换Namespace2.4、确认修改 一、Gitlab权限 Gitlab用户在组中有五种权限&#xff1a;Guest、Reporter、Developer、Master、Owner Guest&#xff1a;可以创建issue、发表评论&#xff0c;不能读写…

“玄学+社交+AI”最全解题思路,融云 AI 对话方案全力支持

“东北 I 人异于常人”成了 MBTI 最新热梗。互联网 Meme 在放过了“为 I 做 E”后&#xff0c;开始对 MBTI 做更精细的划分了。关注【融云全球互联网通信云】了解更多 一切皆可玄学&#xff0c;今年爆火的还有香灰琉璃和十八籽手串&#xff0c;作为年轻人“在上进与上班中选择了…

离线任务的稳定性

数据同步底层脚本 日志追踪&#xff0c;关键字提取&#xff0c;任务失败重启策略 Mysql_to_hive.sh #!/bin/bashecho "mysql host is" $1 echo "mysql db is" $2 echo "mysql table is" $3 echo "mysql username is" $4 echo "…

最新企业服务总线ESB的国内主要厂商和开源厂商排名,方案书价格多少

企业服务总线ESB是什么&#xff1f; ESB平台&#xff08;企业服务总线&#xff0c;Enterprise Service Bus&#xff09;是一种企业级集成平台&#xff0c;它提供了一种开放的、基于标准的消息机制&#xff0c;通过简单的标准适配器和接口&#xff0c;来完成粗粒度应用&#xff…

使用sql语句获取当前SQL sever 的数据库名和名称

1、获取当前数据库名 Select Name From Master..SysDataBases Where DbId(Select Dbid From Master..SysProcesses Where Spid spid) 2、获取当前数据库注释 select db_id(NoteMessage) 或者 Select Dbid From Master..SysProcesses Where Spid spid

外呼系统作用和优势有哪些okcc,ai源码

随着外呼系统诞生&#xff0c;普通中小企业也开始广泛使用&#xff0c;系统给他们带来更多的服务方式和提升业绩的可能。然而&#xff0c;许多企业对外呼系统的理解相对片面和简单&#xff0c;认为它是一个成本中心&#xff0c;需要继续投入人力和使用。事实上&#xff0c;外呼…

HDFS的Shell操作

文章目录 一、HDFS的Shell介绍二、了解HDFS常用Shell命令&#xff08;一&#xff09;三种Shell命令方式&#xff08;二&#xff09;FileSystem Shell文档&#xff08;三&#xff09;常用HDFS的Shell命令 三、HDFS常用命令操作实战&#xff08;一&#xff09;创建目录 一、HDFS的…

Django 入门学习总结8-管理页面的生成

修改polls/admin.py文件为&#xff1a; from django.contrib import admin from .models import Choice, Question class ChoiceInline(admin.StackedInline): model Choice extra 3 class QuestionAdmin(admin.ModelAdmin): fieldsets [ (None, {&q…

java系列之 页面打印出 [object Object],[object Object]

我 | 在这里 &#x1f575;️ 读书 | 长沙 ⭐软件工程 ⭐ 本科 &#x1f3e0; 工作 | 广州 ⭐ Java 全栈开发&#xff08;软件工程师&#xff09; &#x1f383; 爱好 | 研究技术、旅游、阅读、运动、喜欢流行歌曲 &#x1f3f7;️ 标签 | 男 自律狂人 目标明确 责任心强 ✈️公…

【gitlab初始密码登录失败】

gitlab初始密码登录失败 修改密码 修改密码 [rootlocalhost ~]# gitlab-rake "gitlab:password:reset[root]" Enter password: Confirm password: Password successfully updated for user with username root. # 再重新配置gitlab [rootlocalhost ~]# gitlab-ctl…

九宫格 图片 自定义 路径

<image :src" ../../static/img/ item.urlname .png " class"u-w-82 u-h-82 u-p-t-36"></image>使用场景&#xff1a;九宫格里含有多张图片 html <view class"u-p-b-46 u-p-x-35"><u-grid :border"false" c…

一整个分析模型库,大数据分析工具都这么玩了吗?

一整个分析模型库&#xff0c;100张BI报表&#xff0c;覆盖销售、财务、采购、库存等多个分析主题。只需对接ERP&#xff0c;就能自动生成BI报表&#xff0c;完成对海量数据的系统化分析。现在大数据分析工具都发展到这种程度了吗&#xff1f; 放眼看去&#xff0c;现阶段能做…

Mysql之多表查询下篇

Mysql之多表查询下篇 满外连接的实现UNION关键字UNIONUNION ALL操作符 7种SQL JOINS的实现语法格式小结自然连接USING连接表连接的约束条件 满外连接的实现 在上篇博客中&#xff0c;我们可以了解到在Mysql中是不支持FULL JOIN来实现 满外连接的&#xff0c;那么我们在Mysql采用…

国产低功耗Sub-1G全频段收发一体芯片DP4306遥控器、智能抄表、工业控制等应用。

国产低功耗Sub-1G全频段收发一体芯片DP4306遥控器、智能抄表、工业控制等应用。 DP4306芯片是一款高性能低功耗的单片集成收发机&#xff0c;工作频率可覆盖 200MHz~1000MHz&#xff0c;芯片集成了射频接收器、射频发射器、频率综合器、GFSK 调制器、GFSK 解调器等功能模块。通…

CRM系统的销售预测是什么?怎么做?

简单来说&#xff0c;销售预测可以通过销售关键信息为团队预测收入&#xff0c;分配目标。CRM中的销售预测可以帮助企业制定合理的销售目标和策略&#xff0c;并通过实时数据发现瓶颈所在&#xff0c;提高团队绩效。下面说说CRM中销售预测是什么&#xff1f;如何销售预测&#…

Ubuntu环境下基于libxl库文件使用C++实现对表格的操作

功能 表格不存在则创建后再进行操作创建sheet添加新的工作表在sheet中增加数据设置单元格样式 相关配置 下载地址&#xff1a;libxl选择 LibXL for Linux 4.2.0 i386 x64 armhf aarch64 安装配置 1&#xff0c;使用 tar zxvf 文件名.tar.gz 进行文件解压2&#xff0c;创…

《rPPG》——(1)PyTorch——Windows环境配置

《rPPG》——&#xff08;1&#xff09;PyTorch——Windows环境配置 如何查看电脑是否已安装Python环境以及Python版本 anaconda对应python3.8的版本号是多少? 强烈建议大家安装最新版的anaconda&#xff0c;虽然最新版的anaconda是Python3.11的&#xff0c;但是这个并不会影…

[汇编实操]DOSBox工具安装——Ubuntu18.04系统

一、下载&安装 sudo apt install -y dosbox 二、启动 dosbox 三、C盘挂载 将上述文件下载放在任意路径&#xff0c;将DEBUG目录映射为虚拟C盘 MASM.EXE 是用来编译的&#xff0c;LINK.EXE 用来链接&#xff0c;这俩是必须的。 执行如下命令&#xff1a; mount c /m…