正则表达式的简单介绍

在编写处理字符串的程序时,经常会有 查找符合某些复杂规则的字符串的需要,正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本规则的代码。
正则表达式类似Windows下的通配符*和?。只不过比起通配符,它能更精确地描述你的需求
简言之, 正则表达式是用于进行文本匹配的工具,也是一个匹配的表达式。


正则表达式看API中的:java.util.regex包中Pattern类和Matcher

Pattern:Java中专门进行正则表达式编译的类。(一个该类的实例即代表正则表达式本身)

Matcher:通过解释Pattern,对字符序列执行匹配操作的引擎。(用来判断是否匹配的)

先看几种常用匹配(具体可以到API中看到很多的匹配规则):
1.内容
.  匹配除换行符以外的任意字符
\w  匹配字母或数字或下划线(\W 匹配其它字符)
\s  匹配任意的空白符
\d  匹配数字
\b  匹配单词的开始或结束
^   匹配字符串的开始
$   匹配字符串的结束
2.次数
*   重复零次或更多次
+   重复一次或更多次
?   重复零次或一次
{n} 重复n次
{n,m}重复n到m次
[ ] 中括号表示可选

下面看例子

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.junit.Test;

public class Regex1 {
	
	@Test
	//string.matches(regex)
	public void test1(){
		String string = "011-123456";
		//匹配规则:第一个是0,然后是两个数,一个减号,六个数字
		boolean matches = string.matches("0\\d{2}-\\d{6}");
		System.out.println(matches);//true
		
		string = "011-123456789";
		matches = string.matches("0\\d{2}-\\d{6}");
		System.out.println(matches);//完全匹配,false
		
		string = "老干爹";
		//匹配规则:老后面可以有0个到多个字符
		matches = string .matches("老.*");
		System.out.println(matches);//true
	}
	
	@Test
	public void test2(){
		String string = "011-123456";
		//Pattern: Java中专门进行正则表达式编译的类
		Pattern pt = Pattern.compile("0\\d{2}-\\d{6}");
		//Matcher: 通过解释Pattern,对字符序列执行匹配操作的引擎
		Matcher mc = pt.matcher(string);
		System.out.println(mc.find());//true
		
		string = "011-123456789";
		mc = pt.matcher(string);
		System.out.println(mc.find());//true
		//这里的匹配跟String里的匹配是不一样的,String是完全匹配
		//而这里,Pattern,Matcher是部分匹配,找到就算匹配
	}
	@Test
	public void test3(){
		String string = "1-1112-2223-3334-4445-555";
		Pattern pt = Pattern.compile("\\d-\\d{3}",Pattern.MULTILINE);//可跨行匹配
		Matcher mc = pt.matcher(string);
		String res = "";
		while(mc.find()){//find相当于一个游标
			res = mc.group();
			System.out.println(res);
		}
		//也可以指定位置
		System.out.println("***********");
		mc.find(2);
		res = mc.group();
		System.out.println(res);
		/*
		 输出:
		 1-111
		 2-222
		 3-333
		 4-444
		 5-555
		 ***********
		 2-222
		 */
	}
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值