加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式第四篇(Java中使用正则表达式)

发布时间:2020-12-14 01:39:11 所属栏目:百科 来源:网络整理
导读:1、常用 // 以多条件分割字符串时:以逗号(,)或者号(|)来分隔字符串public static void fun2() {Pattern pattern = Pattern.compile("[,|]");String[] strs = pattern.split("Java Hello World Java,Hello,World|Sun");for (int i = 0; i strs.length; i++) {


1、常用

	// 以多条件分割字符串时:以逗号(,)或者号(|)来分隔字符串
	public static void fun2() {
		Pattern pattern = Pattern.compile("[,|]");
		String[] strs = pattern.split("Java Hello World  Java,Hello,World|Sun");
		for (int i = 0; i < strs.length; i++) {
			System.out.println(strs[i]);
		}

	}

	// 以多条件分割字符串时:以逗号(空格)(,)或者号(|)来分隔字符串
	public static void fun3() {
		Pattern pattern = Pattern.compile("[,|]");
		String[] strs = pattern.split("Java Hello  World  Java,World|Sun");
		for (int i = 0; i < strs.length; i++) {
			System.out.println(strs[i]);
		}
	}

	// 以多条件分割字符串时:以逗号(空格)(,)或者号(|)来分隔字符串
	public static void fun4() {
		Pattern pattern = Pattern.compile("[,|]+"); /* +表示分隔符可以连续出现算一次分隔 */
		String[] strs = pattern.split("Java Hello World  Java,World|Sun");
		for (int i = 0; i < strs.length; i++) {
			System.out.println(strs[i]);
		}
	}

	// 文字替换(首次出现字符)
	public static void fun5() {
		Pattern pattern = Pattern.compile("正则表达式");
		Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World");
		// 替换第一个符合正则的数据
		System.out.println(matcher.replaceFirst("Java"));
	}

	// 文字替换(全部)
	public static void fun6() {
		Pattern pattern = Pattern.compile("正则表达式");
		Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World");
		// 替换第一个符合正则的数据
		System.out.println(matcher.replaceAll("88888888888888"));
	}

	// 文字替换(置换字符)
	public static void fun7() {
		Pattern pattern = Pattern.compile("正则表达式");
		Matcher matcher = pattern.matcher("正则表达式 Hello World,正则表达式 Hello World ");
		StringBuffer sbr = new StringBuffer();
		while (matcher.find()) {
			matcher.appendReplacement(sbr,"Java");
		}
		matcher.appendTail(sbr);
		System.out.println(sbr.toString());
	}

	// 去除html标记
	public static void fun8() {
		Pattern pattern = Pattern.compile("<.+?>",Pattern.DOTALL);
		Matcher matcher = pattern.matcher("<a href="index.html">主页</a>");
		String string = matcher.replaceAll("");
		System.out.println(string);
	}

	// 查找html中对应条件字符串
	public static void fun9() {
		String str1 = "href="(.+?)""; // .+?:表示1个以上任意字符并且可以出现多次。并且外面有""号。
		Pattern pattern = Pattern.compile(str1);
		Matcher matcher = pattern.matcher("<a href="index.html">主页</a>");
		if (matcher.find())
			System.out.println(matcher.group(1));
	}

	public static void main(String[] args) {
		fun2();
		System.out.println("2-------------------------------");
		fun3();
		System.out.println("3-------------------------------");
		fun4();
		System.out.println("4-------------------------------");
		fun5();
		System.out.println("5-------------------------------");
		fun6();
		System.out.println("6-------------------------------");
		fun7();
		System.out.println("7-------------------------------");
		fun8();
		System.out.println("8-------------------------------");
		fun9();
	}


2、替换指定{}中文字
public class ReplacePath {

	public static String replace(final String sourceString,Object[] object) {
		String temp = sourceString;
		for (int i = 0; i < object.length; i++) {
			String[] result = (String[]) object[i];
			Pattern pattern = Pattern.compile(result[0]);
			Matcher matcher = pattern.matcher(temp);
			temp = matcher.replaceAll(result[1]);
		}
		return temp;
	}

	public static void main(String[] args) {
		String str = "Java目前的发展史是由{0}年-{1}年";
		String[][] object = { 
				new String[] { "{0}","1995" },new String[] { "{1}","2007" } 
		};
		System.out.println(replace(str,object));
	}
}


3、以正则条件查询指定目录下文件

public class FilesAnalyze {
	private ArrayList<File> files = new ArrayList<File>(); // 用于承载文件路径
	private String _path; // 用于承载未合并的正则公式
	private String _regexp;

	// 解析输入流
	FilesAnalyze(String path,String regexp) {
		getFileName(path,regexp);
	}

	class MyFileFilter implements FileFilter {
		public boolean accept(File file) {// 匹配文件名称
			try {
				Pattern pattern = Pattern.compile(_regexp);
				Matcher match = pattern.matcher(file.getName());
				return match.matches();
			} catch (Exception e) {
				return true;
			}
		}
	}

	// 分析文件名并加入files
	private void getFileName(String path,String regexp) { // 目录
		_path = path;
		_regexp = regexp;
		File directory = new File(_path);
		File[] filesFile = directory.listFiles(new MyFileFilter());
		if (filesFile == null)
			return;

		for (int j = 0; j < filesFile.length; j++) {
			files.add(filesFile[j]);
		}

		return;
	}

	// 显示输出信息 
	public void print(PrintStream out) {
		Iterator<File> elements = files.iterator();
		while (elements.hasNext()) {
			File file = (File) elements.next();
			out.println(file.getPath());
		}
	}

	public static void output(String path,String regexp) {
		FilesAnalyze fileGroup1 = new FilesAnalyze(path,regexp);
		fileGroup1.print(System.out);
	}

	public static void main(String[] args) {
		output("C:新建文件夹","[A-z|.]*"); // 是英文文件
	}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读