`

java 正则表达式学习

阅读更多

import java.util.regex.*;

public class Test{  
	public static void main(String args[]) throws Exception{
		//基础
		//String regex = "sales.";
		//String regex = ".a..";
		//String regex = ".a.\\.xls";
		//String regex = "[ns]a.\\.xls";
		//String regex = "[ns]a[0123456789]\\.xls";
		//String regex = "[ns]a[0-9]\\.xls";//同[0123456789]一样
		String regex = "[ns]a[^0-9]\\.xls";
		Test.go(regex, StrOne());
		
		System.out.println("-----------example two------------------");
		//匹配【】一个字符
		regex = "[Rr]eg[Ee]x";
		Test.go(regex, StrTwo());
		
		System.out.println("-----------example three------------------");
		//匹配 “+”一个或者多个
		regex = "[\\w.]+@[\\w.]+\\.\\w+";
		Test.go(regex, StrThree());

		System.out.println("-----------example four------------------");
		//匹配 “*”零个或者多个
		regex = "\\w+[\\w.]*@[\\w.]+\\.\\w+";
		Test.go(regex, StrThree());

		System.out.println("-----------example five------------------");
		//匹配 “?”零个或者一个
		regex = "https?://[\\w./]+";
		Test.go(regex, StrFour());
		
		System.out.println("-----------example five------------------");
		//匹配 “{2,4}”重复出现最少2个,最大4个
		regex = "\\d{1,2}[-\\/]\\d{1,2}[-\\/]\\d{2,4}";
		Test.go(regex, StrFive());
		
		System.out.println("-----------example six------------------");
		//匹配 “{2,4}”重复出现最少2个,最大4个,{3,}匹配至少3位,{3}匹配3位
		regex = "\\d+:\\$\\d{3,}\\.\\d{2}";
		Test.go(regex, StrSix());
		
		System.out.println("-----------example seven-----贪婪型-------------");
		/**
		 * 贪婪型		懒惰型
		 * *			*?
		 * +			+?
		 * {n,}			{n,}?
		 */
		regex = "<[Bb]>.*</[Bb]>";
		Test.go(regex, StrSeven());
		System.out.println("-----------example seven-----懒惰型-------------");
		regex = "<[Bb]>.*?</[Bb]>";
		Test.go(regex, StrSeven());
		System.out.println("-----------example eight----\\b--------------");
		//单词边界 \b
		regex = "\\bcat\\b";
		Test.go(regex, StrEight());
		System.out.println("-----------example eight----\\B--------------");
		//不匹配单词边界 \B
		regex = "\\B-\\B";
		Test.go(regex, StrEight());
		System.out.println("-----------example nine-------错误-----------");
		//字符串边界 ^字符串的开头(只有放在【】里边才表示非哦。。。)
		//字符串边界 $结束
		regex = "<\\?xml.*\\?>";
		Test.go(regex, StrNine());
		System.out.println("-----------example nine-------正确(文件开始不是xml)------错误-----");
		regex = "^\\s*<\\?xml.*\\?>";
		Test.go(regex, StrNine());
		System.out.println("-----------example nine-------正确-----------");
		regex = "^\\s*<\\?xml.*\\?>";
		Test.go(regex, StrNine_());
		System.out.println("-----------example nine-------$---错误--------");
		regex = "</[Hh][Tt][Mm][Ll]>\\s*$";
		Test.go(regex, StrNine__());
		System.out.println("-----------example nine-------$---正确--------");
		regex = "</[Hh][Tt][Mm][Ll]>\\s*$";
		Test.go(regex, StrNine___());
		System.out.println("-----------example eleven---------------");
		//字表达式
		regex = "(&nbsp;){2,}";
		Test.go(regex, StrEleven());
		System.out.println("-----------example twelve---------------");
		//子表达式
		regex = "\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3}";
		Test.go(regex, StrTwelve());
		regex = "(\\d{1,3}.){3}\\d{1,3}";
		Test.go(regex, StrTwelve());
		System.out.println("-----------example thirteen---------------");
		regex = "(19|20)\\d{2}";
		Test.go(regex, StrThirteen());
		System.out.println("-----------example IP---------------");
		/**
		 * 任何一个1位或2位的数字;
		 * 任何一个以1位开头的3位数字;
		 * 任何一个以2开头,第二位数字在0~4之间的3位数字;
		 * 任何一个以25开头,第三位数字在0~5之间的3位数字;
		 */
		regex = "(((\\d{1,2})|(1\\d{2})|(2[0-4]\\d)|(25[0-5]))\\.){3}((\\d{1,2})|(1\\d{2})|(2[0-4]\\d)|(5[0-5]))";
		Test.go(regex, StrTwelve());
		System.out.println("-----------example fourteen---回溯引用------------");
		//回溯引用,查出重复的
		/**
		 * [ ]匹配一个或者多个空格;
		 * \w+匹配一个或多个字母数字字符;
		 * (\w+)是一个子表达式
		 * 当(\w+)匹配到单词of的时候,\1也匹配单词of
		 * 回溯引用指的是后半部分引用在前半部分中定义的字表达式
		 * \1表示模式里第一个表达式
		 */
		regex = "[ ]+(\\w+)[ ]+\\1";
		Test.go(regex, StrFourteen());
		System.out.println("-----------example Fiveteen-----回溯引用----------");
		regex = "<[hH]([1-6])>.*?</[hH]\\1>";
		Test.go(regex, StrFiveteen());
		System.out.println("-----------example 搜索》替换 给邮件加链接-----回溯引用----------");
		regex = "[\\w.]+@[\\w.]+\\.\\w+";
		Test.go(regex, StrThree());
		regex = StrThree().replaceAll("(\\w+[\\w\\.]*@[\\w\\.]+\\.\\w+)", "<A HREF='mailto:$1'>$1</A>");
		System.out.println(regex);
		System.out.println("-----------example -----向前查找---------");
		//向前查找忽略":" 
		regex = ".+(?=:)";
		Test.go(regex, StrSeventeen());
		regex = ".+(:)";
		Test.go(regex, StrSeventeen());
		System.out.println("-----------example -----向后查找---------");
		//向后查找
		regex = "(?<=\\$)[0-9.]+";
		Test.go(regex, StrEighteen());
		System.out.println("-----------example -----向前向后查找---------");
		//向前向后查找
		regex = "(?<=<[tT][iI][tT][lL][eE]>).*(?=</[tT][iI][tT][lL][eE]>)";
		Test.go(regex, StrNineteen());
	}
	public static String StrNineteen(){
		String str = 
			"<html>" +
			"<title>Hello World</title>" +
			"</html>";
		return str;
	}
	public static String StrEighteen(){
		String str = 
			"ABCD1:$2.45\n" +
			"YHTG8:$56.65";
		return str;
	}
	public static String StrSeventeen(){
		String str = 
			"http://www.google.com/\n" +
			"https://www.sina.com.cn/\n" +
			"htpps://www.wiki.com";
		return str;
	}
	public static String StrSixteen(){
		String str = 
			"313-555-1234\n" +
			"248-555-9999\n" +
			"810-555-9000";
		return str;
	}
	public static String StrFiveteen(){
		String str = 
			"<body>" +
			"<H1>Welcome</H1>" +
			"Hello world hi" +
			"<H2>Welcome</H2>" +
			"Hello world hii" +
			"<H2>Welcome</H3>" +
			"</body>";
		return str;
	}
	public static String StrFourteen(){
		String str = 
			"This is a block of of text,here are are,they and and";
		return str;
	}
	public static String StrThirteen(){
		String str = 
			"ID:0123" +
			"SEX:M" +
			"DOB:1967-08-17" +
			"Status:Avtive";
		return str;
	}
	public static String StrTwelve(){
		String str = 
			"Ping hog. forta.com [12.159.46.200]";
		return str;
	}
	public static String StrEleven(){
		String str = 
			"Hello,my name Windows&nbsp;&nbsp;2000,";
		return str;
	}
	public static String StrNine___(){
		String str = 
			"<?xml version='1.0' encoding='encoding='UTF-8''?>" +
			"</html>";
		return str;
	}
	public static String StrNine__(){
		String str = 
			"<?xml version='1.0' encoding='encoding='UTF-8''?>" +
			"</html> 1234;";
		return str;
	}
	public static String StrNine_(){
		String str = 
			"<?xml version='1.0' encoding='encoding='UTF-8''?>";
		return str;
	}
	public static String StrNine(){
		String str = 
			"This is bad, real bad!\n" +
			"<?xml version='1.0' encoding='encoding='UTF-8''?>";
		return str;
	}
	public static String StrEight(){
		String str = 
			"The cat cattered his food all over the room.\n" +
			"appears on your color - coded pass-key";
		return str;
	}
	public static String StrSeven(){
		String str = 
			"living in <B>AK</B> and <B>HI</B>";
		return str;
	}
	public static String StrSix(){
		String str = 
			"1001:$496.80\n" +
			"1002:$26.43\n" +
			"1003:$4125.85\n" +
			"1004:$517.98";
		return str;
	}
	public static String StrFive(){
		String str = 
			"4/8/03\n" +
			"10-6-2004\n" +
			"2/2/2\n" +
			"01-01-01";
		return str;
	}
	public static String StrFour(){
		String str = 
			"The URL is http://www.forta.com/,to connect\n" +
			"securely use https://www.forta.com/ insteads\n" +
			"securely use httpssssssss://www.forta.com/";
		return str;
	}
	public static String StrThree(){
		String str = 
			"..ben.forta@forta.com\n" +
			"ben@urgent.forta.com\n" +
			"Hello .ben@fortaben.com is my email addres.";
		return str;
	}
	public static String StrTwo(){
		String str = 
			"The phrase 'regular expression' is often\n" +
			"abbreviated as RegEx or regex.";
		return str;
	}
	public static String StrOne(){
		String str = 
			"sales1.xls\n" +
			"orders3.xls\n"+
			"sales2.xls\n" +
			"sales3.xls\n" +
			"apac1.xls\n" +
			"eroupe2.xls\n" +
			"na1.xls\n" +
			"na2.xls\n" +
			"sa1.xls\n" +
			"ca1.xls\n" +
			"na58xls\n" +
			"sam.xls";
		return str;
	}
	public static void go(String regex,String str){
		Pattern p = Pattern.compile(regex);
		Matcher m = p.matcher(StrOne());
		p = Pattern.compile(regex);
		m = p.matcher(str);
		String val = null; 
		while (m.find()){
			val = m.group();
			System.out.println("MATCH: " + val);
		}
	}
}
分享到:
评论

相关推荐

    java正则表达式学习

    【Java正则表达式学习】 Java正则表达式是Java编程语言中用于处理字符串的强大工具,自JDK1.4版本起被引入。它源于PHP并迅速流行,主要用于复杂字符串的验证和处理。正则表达式可以高效地完成对字符串的检查、分割...

    Java 正则表达式学习

    ### Java正则表达式学习 #### 一、简介 在Java编程中,正则表达式是一种非常实用且强大的工具,用于处理字符串模式匹配与搜索替换等操作。通过本篇文章,我们将快速入门Java中的正则表达式,并掌握其基本用法。 #...

    java正则表达式学习笔记

    ### Java正则表达式基础知识与应用 #### 一、引言 正则表达式是一种强大的文本处理工具,它能够帮助开发者高效地进行字符串的搜索、替换等操作。Java中的正则表达式支持广泛的标准和特性,是进行文本处理任务的理想...

    java正则表达式匹配工具

    Java正则表达式匹配工具是IT领域中一种强大的文本处理工具,它利用正则表达式(Regular Expression)的规则来查找、替换或者提取文本中的特定模式。正则表达式是一种特殊的字符序列,能够帮助程序员或者用户高效地...

    JAVA正则表达式大全

    以下是对这些文档标题所涉及的Java正则表达式知识点的详细解释: 1. **正则表达式之道** 这个主题可能涵盖了正则表达式的基础概念,包括元字符、字符类、量词和分组。元字符如`.`代表任意字符,`^`表示行首,`$`...

    java正则表达式教程html版带目录

    Java正则表达式是Java编程语言中的一个强大工具,它用于模式匹配和字符串处理,尤其在数据验证、文本检索和替换等方面发挥着重要作用。...现在,打开`java正则表达式Regex.html`,开始你的Java正则表达式学习之旅吧!

    Java正则表达式.ppt

    Java正则表达式是一种强大的文本处理工具,广泛用于验证字符串、查找特定模式和替换文本。在Java中,正则表达式提供了简洁而灵活的方式来处理字符串,使得编程人员能够以更高效的方式实现各种文本操作。 正则表达式...

    java 正则表达式应用jar包 regex-smart.jar

    Java正则表达式是编程语言Java中的一个强大工具,它用于模式匹配、数据验证和文本检索替换。在Java中,正则表达式是通过java.util.regex包提供的接口和类来实现的。`regex-smart.jar`这个库显然是为了简化开发者在...

    常用java正则表达式

    ### 常用Java正则表达式知识点 #### 一、引言 正则表达式是一种强大的工具,用于处理文本并查找模式。多种编程语言,包括Perl、PHP、Python、JavaScript以及Java等均内置了对正则表达式的支持。本文将详细介绍Java...

    Java正则表达式详解(非常适合入门

    #### 三、Java正则表达式的实践学习 学习Java正则表达式,理论与实践并重。通过大量的匹配实例进行学习,可以更深刻地理解其工作原理和使用技巧。这对于从未接触过正则表达式或对其基础概念尚不熟悉的学习者来说,...

    java正则表达式使用例子

    Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许我们通过模式匹配来查找、替换或分割文本。在Android开发中,正则表达式尤其重要,因为它们可以帮助我们验证用户输入、处理文本数据或者进行复杂的...

    Java正则表达式快速学习

    Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许程序员通过模式匹配来查找、替换或分割文本。正则表达式在各种场景下都有广泛应用,如数据验证、文本提取、搜索替换等。本篇文章将深入探讨Java中的...

    Java正则表达式学习教程

    " + Pattern.compile(".bb")....总之,Java正则表达式是开发过程中处理文本的强大工具,熟练掌握可以极大地提高文本处理的效率和准确性。通过深入学习和实践,你可以编写出复杂的正则表达式来解决各种字符串处理问题。

    java正则表达式截取demo下载即可运行

    通过运行提供的“java正则表达式截取demo”,你不仅可以学习到基本的正则表达式操作,还可以了解到如何在实际项目中应用这些知识。示例可能包括了不同类型的正则表达式以及它们在截取字符串时的具体用法,这对于提升...

    java正则表达式实例教程

    Java正则表达式是Java编程语言中用于处理字符串的强大工具,它允许程序员通过模式匹配来查找、替换或分割文本。本教程将深入讲解Java中的正则表达式,并提供丰富的实例来帮助开发者理解和应用这些概念。 1. 正则...

    java正则表达式及例子 pdf

    Java正则表达式是Java编程语言中用于处理字符串的强大工具,...通过阅读《Java 正则表达式的总结和一些小例子.pdf》和《Java正则表达式详解.pdf》,你将能够深入学习和实践更多正则表达式的用法,进一步提升编程技能。

    Java 正则表达式判断字符串是否包含中文

    ### Java正则表达式判断字符串是否包含中文 在日常的软件开发过程中,我们经常会遇到需要对输入的字符串进行校验的情况。例如,在处理用户输入、文本分析或数据清洗时,可能需要判断一个字符串中是否包含中文字符。...

    JAVA正则表达式,比较难学,好好看看

    Java正则表达式是Java语言中的一个重要特性,用于处理字符串的模式匹配和处理。在Java SDK 1.4及以后的版本中,引入了`java.util.regex`包,提供了对正则表达式全面且强大的支持。这个包包含了两个核心类:`Pattern`...

Global site tag (gtag.js) - Google Analytics