`

Java Regular Expressions

    博客分类:
  • Java
 
阅读更多

使用正则表达式可以方便地对数据进行匹配,还可以 执行更加复杂的字符串验证、拆分、替换功能。

示例程序RegexDemo01.java判断一个字符串是否由数字组成(不使用正则表达式)

package com.fairy.regex;

public class RegexDemo01 {
	public static void main(String[] args) {
		String str = "1234567890";
		boolean flag = true;
		char[] ch = str.toCharArray();

		for (char c : ch) {
			if (c < '0' || c > '9') {
				flag = false;
				break;
			}
		}

		if (flag) {
			System.out.println("是由数字组成!");
		} else {
			System.out.println("不是由数字组成!");
		}
	}
}

 

示例程序RegexDemo02.java,判断一个字符串是否由数字组成(使用正则表达式)

package com.fairy.regex;

import java.util.regex.Pattern;

public class RegexDemo02 {
	public static void main(String[] args) {
		String str = "1234567890";

		if (Pattern.compile("\\d+").matcher(str).matches()) {
			System.out.println("是由数字组成!");
		} else {
			System.out.println("不是由数字组成!");
		}
	}
}

 

以上两段代码完成了同样的功能,但是代码2的长度明显比代码1短很多。实际上具体的正则表达式操作类是需要通过Pattern和Matcher两个类完成操作的。如果要在程序中应用正则表达式则必须依靠Pattern类与Matcher类,这两个类都在java.util.regex包中定义。Pattern类的主要作用是进行正则规范的编写,而Matcher类主要是执行规范,验证一个字符串是否符合其规范。

常用的正则规范的定义如下表所示


 数量表示(X表示一组规范)定义如下表所示


 逻辑运算符(X、Y表示一组规范)定义如下表所示


 在Pattern类中直接使用上述三张表中的正则规则则即可完成相应的操作,Pattern类的常用方法如下表所示

在Pattern类中如果要取得Pattern类实例,则必须调用compile()方法。

如果要验证一个字符串是否符合规范,则可以使用Matcher类,Matcher类的常用方法如下表所示。


 示例程序RegexDemo03.java,验证一个字符串是否是合法的日期格式

package com.fairy.regex;

import java.util.regex.Pattern;

public class RegexDemo03 {
	public static void main(String[] args) {
		String str = "2012-12-21";
		String pat = "\\d{4}-\\d{2}-\\d{2}";

		if (Pattern.compile(pat).matcher(str).matches()) {
			System.out.println("日期格式合法!");
		} else {
			System.out.println("日期格式不合法!");
		}
	}
}

 在程序中"\"字符是需要进行转义的,两个  "\"实际上表示的是一个"\",所以实际上"\\d"表示的是"\d"。

 

示例程序RegexDemo04.java,按照字符串的数字将字符串拆分

package com.fairy.regex;

import java.util.regex.Pattern;

public class RegexDemo04 {
	public static void main(String[] args) {
		String str = "A1B22C333D4444E55555F";
		String pat = "\\d+";

		String[] strings = Pattern.compile(pat).split(str);

		for (String s : strings) {
			System.out.print(s + "\t");
		}
	}
}

 

示例程序RegexDemo05.java,将全部的数字替换成“_”

package com.fairy.regex;

import java.util.regex.Pattern;

public class RegexDemo05 {
	public static void main(String[] args) {
		String str = "A1B22C333D4444E55555F";
		String pat = "\\d+";

		String newStr = Pattern.compile(pat).matcher(str).replaceAll("_");
		
		System.out.println(newStr);
	}
}
 

String类对正则表达式的支持

在String类中有3个方法支持正则操作,如下标所示。

示例程序RegexDemo06.java,使用String修改之前操作

package com.fairy.regex;

public class RegexDemo06 {
	public static void main(String[] args) {
		String str1 = "A1B22C333D4444E55555F".replaceAll("\\d+", "_");

		boolean temp = "2012-12-21".matches("\\d{4}-\\d{2}-\\d{2}");

		String[] strings = "A1B22C333D4444E55555F".split("\\d+");

		System.out.println(str1);
		System.out.println(temp);

		for (String s : strings) {
			System.out.print(s + "\t");
		}
	}
}

 

示例程序RegexDemo07.java,对于一些敏感字符操作时需要转义

package com.fairy.regex;

public class RegexDemo07 {
	public static void main(String[] args) {
		String info = "JSP+Servlet+JDBC|Struts+Spring+Hibernate|JSF+EJB+JPA";
		String[] strings = info.split("\\|");

		for (String s : strings) {
			String[] string2 = s.split("\\+");

			System.out.println(string2[0] + "\t" + string2[1] + "\t"
					+ string2[2]);
		}
	}
}

 在正则操作中,如果发现某些字符无法直接使用,则最好将其进行转义处理。

  • 大小: 79 KB
  • 大小: 40.6 KB
  • 大小: 24.4 KB
  • 大小: 37.1 KB
  • 大小: 24 KB
  • 大小: 33.9 KB
分享到:
评论

相关推荐

    Apress Java Regular Expressions Taming the java Dot util Dot regex Engine

    Java经典书籍,java正则表达式,英文版。

    Packt.Java.9.Regular.Expressions

    You will begin by discovering what regular expressions are and how they work with Java. This easy-to-follow guide is a great place from which to familiarize yourself with the core concepts of regular ...

    Java 9 Regular Expressions epub

    Java 9 Regular Expressions 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    Java 9 Regular Expressions mobi

    Java 9 Regular Expressions 英文mobi 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    Java 9 Regular Expressions 无水印pdf

    Java 9 Regular Expressions 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或...

    High Performance Java IO And Regular Expressions 高性能JAVA IO 与正则表达式

    High Performance Java IO And Regular Expressions 高性能JAVA IO 与正则表达式

    Wrox - Beginning Regular Expressions.rar

    《Wrox - Beginning Regular Expressions》是一本专为初学者设计的正则表达式入门教程。这本书深入浅出地介绍了正则表达式的基本概念、语法和应用,旨在帮助读者掌握这一强大的文本处理工具。 正则表达式(Regular ...

    Java正则表达式教程(Regular Expressions of Java Tutorial)

    由于当前版本的 Java Tutorial 是基于 JDK 6.0 的,因此其中的示例程序也用到了 JDK 6.0 中的新增类库,但正则表达式在 JDK 1.4 就已经存在了,为了方便大家使用,改写了部分的源代码,源代码类名中后缀为“V4”的...

    Regular Expressions Cookbook.pdf

    **"Regular Expressions Cookbook.pdf"** 这个标题明确指出本书的主题是正则表达式(Regular Expressions,简称 Regex)。正则表达式是一种强大的文本处理工具,被广泛应用于搜索、替换以及解析文本等任务中。...

    Regular.Expressions

    正则表达式(Regular Expressions,简称regex)是编程领域中一种强大的文本处理工具,它用于模式匹配、数据提取、验证输入等任务。这个“Regular.Expressions”资料包显然是为开发者设计的,旨在深入理解正则表达式...

    Mastering Regular Expressions, 3rd Edition

    书名:Mastering Regular Expressions, 3rd Edition 格式:CHM 语言:English 简介: Regular expressions are an extremely powerful tool for manipulating text and data. They are now standard ...

    Mastering Regular Expressions, 2nd Edition

    正则表达式(Regular Expression)是编程语言中用于模式匹配和文本搜索的强大工具,广泛应用于数据验证、文本提取、搜索与替换等多个领域。 本书涵盖了正则表达式的各个方面,包括基础语法、高级特性和实践应用。在...

    中文版Mastering Regular Expressions(第三版)

    随着互联网的迅速发展,几乎所有工具软件和程序...本书主要讲解了正则表达式的特性和流派、匹配原理、优化原则、实用诀窍以及调校措施,并详细介绍了正则表达式在Perl、Java、.NET、PHP中的用法。中文版更方便阅读。

    Beginning.Regular.Expressions

    C# 提供了.NET Framework下的`System.Text.RegularExpressions`命名空间,该命名空间包含`Regex`类,用于处理正则表达式操作。例如: ```csharp string pattern = @"\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b"; ...

Global site tag (gtag.js) - Google Analytics