Java中的正则表达式

Java中用到的正则表达式规则在java.util.regex.Pattern类中可以查到。

常用规则有:

1.字符

x    表示字符x。

\\    表示\ , 第一个\是转义,.*[]^${}\+?|() 都需要转义。

\n   换行符('\u000A')。

\r    回车符('\u000D')。

 

2.字符类

[abc]    表示字符a或b或c。

[^abc]   表示除字符a,b,c以外的一个字符。

[a-zA-Z]  表示a到z或A到Z的所有字母中的其中。

[0-9]   表示0到9的数字

 

3.预定义字符类

.  表示任意字符,要表示.本身用\.

\d  表示0-9的数字,与[0-9]相同。

\w  表示单词字符,与[a-zA-Z_0-9]相同 ,字母数字下划线。

 

4.边界匹配器

^x  表示以x开头。

x$  表示以x 结尾。如 ^abc$是指abc

\b  表示单词边界,单词字符之间那些非单词字符就是单词边界

 

5.数量词

x?  表示x出现0次或1次

x*  表示x出现0次到多次

x+  表示x出现1次到多次

x{n}  表示x出现n次

x{n,} 表示x出现n次或更多次

x{n,m}表示x出现n次到m次

 

使用举例:

1. 判断功能

  检查QQ号码:

package regex;

import java.util.Scanner;

/**
 * 
 *         输入QQ号码,检查是否符合以下规则: 
 *         1. 5-15位数字 
 *         2. 不以0开头
 */
public class RegexDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入QQ号码:");
		String qq = sc.nextLine();
		System.out.println("检查结果:" + checkQQ(qq));

	}

	public static boolean checkQQ(String qq) {
		// 或者 "[1-9]\\d{4,14}"
		return qq.matches("[1-9][0-9]{4,14}");

	}
}

 

2. 分割功能

String类的 String[] split(String regex)

 

public class SplitDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		String s = "18-24";
		String regex = "-";
		String[] strings = s.split(regex);
		int startAge = Integer.parseInt(strings[0]);
		int endAge = Integer.parseInt(strings[1]);
		System.out.println("Start age:" + startAge + " End age:" + endAge);

                String a1 = "a,b,c";
		String[] arrayString1 = a1.split(",");
		for (int i = 0; i < arrayString1.length; i++) {
			System.out.println(arrayString1[i]);
		}
		System.out.println("----------------------");

		String a2 = "a.b.c";
		String[] arrayString2 = a2.split("\\.");
		for (int i = 0; i < arrayString2.length; i++) {
			System.out.println(arrayString2[i]);
		}
		System.out.println("----------------------");

		String a3 = "a b    c";
		String[] arrayString3 = a3.split(" +");
		for (int i = 0; i < arrayString3.length; i++) {
			System.out.println(arrayString3[i]);
		}
		System.out.println("----------------------");

		String a4 = "C:\\Users\\zhenijia\\Documents\\ECE\\automated_test";
		String[] arrayString4 = a4.split("\\\\");
		for (int i = 0; i < arrayString4.length; i++) {
			System.out.println(arrayString4[i]);
		}
		System.out.println("----------------------");
	}

}

 

 3.替换功能

String类的 String replaceAll(String regex, String replacement) 和 String replaceFirst(String regex, String replacement)

public static void main(String[] args) {
		String regex = "a*b";
		String replace = "love";
		String string = "abaabaaabb";
		String replaceAll = string.replaceAll(regex, replace);
		String replaceFirst = string.replaceFirst(regex, replace);
		System.out.println("replaceAll:" + replaceAll);
		System.out.println("replaceFirst:" + replaceFirst);

	}

 4.查找功能,使用Pattern和Matcher类

	public static void main(String[] args) {
		// 查找该字符串中的3字母的单词
		String s = "jin tian yao xia yu, qing da jia dai hao yu san.";
		Pattern p = Pattern.compile("\\b\\w{3}\\b");
		Matcher m = p.matcher(s);

		// 注意,必须先find,才能group
		while (m.find()) {
			System.out.println(m.group());
		}

	}

 Pattern和Matcher类也可以做判断,基本格式是这样用:

Pattern p = Pattern.compile("\\b\\w{3}\\b");
Matcher m = p.matcher("jin");
return m.matches();

 如果字符串整个匹配正则表达式的,就会返回true。

你可能感兴趣的:(正则表达式)