Skip to content

正则表达式扩展

1273字约4分钟

java正则表达式

2024-10-24

1.正则表达式扩展

1.POSIX字符类

\p{Lower} 小写字母字符:[a-z] \p{Upper} 大写字母字符:[A-Z] \p{ASCII} 所有 ASCII:[\x00-\x7F] \p{Alpha} 字母字符:[\p{Lower}\p{Upper}] \p{Digit} 十进制数字:[0-9] \p{Alnum} 字母数字字符:[\p{Alpha}\p{Digit}] \p{Punct} 标点符号:!"#$%&'()*+,-./:;<=>?@[]^_`{|}~ \p{Graph} 可见字符:[\p{Alnum}\p{Punct}] \p{Print} 可打印字符:[\p{Graph}\x20] \p{Blank} 空格或制表符:[ \t] \p{Cntrl} 控制字符:[\x00-\x1F\x7F] \p{XDigit} 十六进制数字:[0-9a-fA-F] \p{Space} 空白字符:[ \t\n\x0B\f\r]

2.匹配模式

1.最大匹配(贪婪模式) \S+

2.最小匹配(勉强模式) \S+?

3.独占模式 \S++

	private static void test1() {
		String regex;
		// 最大匹配
		regex = "<div>(\\S*)</div>";
		String input = "<div>hello</div><div>world</div>";
//		Matcher matcher = pattern.matcher(input);
		System.out.println(input.replaceAll(regex, "$1"));
		// 最小匹配
		regex = "<div>(\\S*?)</div>";
		System.out.println(input.replaceAll(regex, "$1"));
		// 独占模式
		regex="\\S+b";
		System.out.println("aaaab".matches(regex));
		regex="\\S++b";//独占模式不会回溯
		System.out.println("aaaab".matches(regex)==false);
	}

3.反向引用

\w{3}\1引用一次\w

abcabc匹配

split方法

split(regex,int x)

x为结果的阈值

为-1是结果数组多一个元素,为0默认,正数表示结果数组的元素个数

Java高级-File类

1.定义

File不是文件类而是文件和目录类

2.作用

1.操作文件

2.操作目录

3.操作

目录/文件操作

1.创建目录/文件

./表示当前目录

File对象存在不代表物理文件的存在

1.mkdir()创建一级目录

2.mkdirs()创建多级目录

2.删除目录/文件

1.delete()删除当前路径的最后一级目录

2.deleteOnExit()当虚拟机正常退出时删除当前路径的最后一级目录

3.createNewFile()创建文件

4.createTempFile()创建临时文件

3.目录修改/文件

1.renameTo(new File(newPath))重命名目录

2.setXXX()设置权限

// 设置此抽象路径名所有者执行权限的一个便捷方法。 
setExecutable(boolean executable)
// 设置此抽象路径名的所有者或所有用户的执行权限。 
setExecutable(boolean executable, boolean ownerOnly) 
// 设置此抽象路径名指定的文件或目录的最后一次修改时间。  
setLastModified(long time) 
// 设置此抽象路径名所有者读权限的一个便捷方法。 
setReadable(boolean readable) 
// 设置此抽象路径名的所有者或所有用户的读权限 
setReadable(boolean readable, boolean ownerOnly) 
// 标记此抽象路径名指定的文件或目录,从而只能对其进行读操作。 
setReadOnly()  
// 设置此抽象路径名所有者写权限的一个便捷方法。
setWritable(boolean writable) 
// 设置此抽象路径名的所有者或所有用户的写权限。
setWritable(boolean writable, boolean ownerOnly)

4.目录查找/文件

1.exists()返回当前file对象的路径的物理路径是否存在

2.getAbsolutePath()获取文件对象的物理路径

3.getFreeSpace()获取所在磁盘的空闲空间字节数

4.getTotalSpace()获取当前磁盘总空间

5.getName()获取当前文件对象路径名

6.getPath()获取路径文件对象路径

7.length()获取文件长度

8.获取路径下所有文件以String数组的形式保存list()

private static void test1() throws IOException {
		String path = "./testdir";
		File file = new File(path);
		System.out.println(file.exists());// false
		// 创建文件夹
		// ./表示当前目录
//		file.mkdir();
		System.out.println(file.exists());// true
		// 创建多级目录
		path = "./testdir/testdir1";
		file = new File(path);
		System.out.println(file.exists());// false
//		file.mkdirs();
		System.out.println(file.exists());// true
		// 判断目录是否存在
//		file = new File("./test");
//		System.out.println(file.exists());// false
		// 删除目录,只能删除最后一级目录
//		System.out.println(file.delete());
//		System.out.println(file.exists());// false
		// 修改目录,重命名
		System.out.println(file.renameTo(new File("./testdir/dir")));// true
		System.out.println(file.exists());// false
		// 查看目录
		path = "./testdir/dir";
		file = new File(path);
		// 1.查看路径是否存在
		System.out.println(file.exists());// true
		// 2.获取文件对象的物理路径
		System.out.println(file.getAbsolutePath());
		// 3.获取所在磁盘的空闲空间字节数
		System.out.println(file.getFreeSpace());
		// 4.获取当前磁盘总空间
		System.out.println(file.getTotalSpace());
		// 5.获取当前文件对象路径名
		System.out.println(file.getName());
		// 6.获取路径文件对象路径
		System.out.println(file.getPath());
		// 7.获取文件长度
		System.out.println(file.length());
		// 8.创建文件
		path = "./testdir/dir/test.txt";
		file = new File(path);
		System.out.println(file.exists());// false
		System.out.println(file.createNewFile());
		System.out.println(file.exists());// true
		// 9.获取路径下所有文件以String数组的形式保存
		path = "./testdir/dir";
		file = new File(path);
		String[] list = file.list();
		for (String string : list) {
			System.out.println(string);
		}
	}

I/O流

1.定义

I/O流就是Java用来操作和传输数据的技术。(形象的把数据流比作水流,像通过某种管道运输)

2.分类

1.方向

以Java程序为基准

输入流 读入 Datasrc---->JavaProgram

输出流 写出 JavaProgram---->Datasrc

2.处理宽带

字节流

字符流

3.功能

节点流

处理流

3.四个抽象基类

输入输出
字节流InputStreamOutPutStream
字符流ReaderWriter

4.流的操作

1.创建流对象

	private static void test() {
		try {
			File file = new File("./testdir/test.txt");
			InputStream inputStream = new FileInputStream(file);
//			System.out.println((char)inputStream.read());
			int out;
			while((out = inputStream.read()) != -1) {
				System.out.print((char)out);
			}	
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
	}