正则表达常用的方法

原创 2013年12月04日 09:57:33

为了找到符合匹配的子字符串,一定要先用find()方法,然后再用group()方法才能找到符合
匹配规则的子字符串,否则直接使用group()方法会报错,不能找到符合的结果

 

package hb.pattern;

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

import org.junit.Before;
import org.junit.Test;

public class PatternDemo {

	private String reg="";
	private String target="";
	private String source="";
	
	@Before
	public void init(){
		this.reg="aa*b";
		this.target="变量";
		this.source="aaaaaaaabbbbbaaaaab";
	}
	
	/**
	 * 使用初始化的数据进行正则表达式匹配
	 */
	@Test
	public void stringPattern(){
		Pattern p = Pattern.compile(reg);
		Matcher m = p.matcher(source);
		m.find();
		String temp = m.group();
		String result = this.source.replace(temp, this.target);
		System.out.println(result);
	}
	
	/**
	 * 判断字符串中是否存在符合正则表达式规则的子字符串
	 */
	@Test
	public void esay(){
		Pattern p = Pattern.compile("aa*b");
		Matcher m = p.matcher("aaaaaaaabbbbb");
		boolean b = m.matches();
		System.out.println(b);
	}
	
	/**
	 * 将匹配的第一个字符串替换掉
	 */
	@Test
	public void repalceFirstTest(){
		Pattern p = Pattern.compile("aa*b");
		Matcher m = p.matcher("aaaaaaaabbbbbaaaaab");
		String result = m.replaceFirst(this.target);
		System.out.println(result);
	}
	
	/**
	 * 将匹配的所有字符串全部替换掉
	 */
	@Test
	public void repalceAllTest(){
		Pattern p = Pattern.compile("aa*b");
		Matcher m = p.matcher("aaaaaaaabbbbbaaaaab");
		String result = m.replaceAll(this.target);
		System.out.println(result);
	}
	
	/**
	 * 找到一次符合正则表达式条件的就打印出结果,不再进行
	 */
	@Test
	public void group(){
		Pattern p = Pattern.compile("aa*b");
		Matcher m = p.matcher("aaaaaaaabbbbbaaaaab");
		m.find();
		String result = m.group();
		System.out.println(result);
	}
	
	/**
	 * 查找出所有符合条件的子字符串
	 */
	@Test
	public void groupHigh(){
		Pattern p = Pattern.compile("aa*b");
		Matcher m = p.matcher("aaaaaaaabbbbbaaaaab");
		while(m.find()){
			String result = m.group();
			System.out.println(result);
		}
	}
	
	/**
	 * 匹配不到符合条件的字符串
	 */
	@Test
	public void groupException(){
		try{
			Pattern p = Pattern.compile("aa*b");
			Matcher m = p.matcher("a");
			m.find();
			String result = m.group();//异常是在这句话中产生的
			System.out.println(result);
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	/**
	 * 找到第一个符合条件的子字符串的起始位置和最后位置
	 */
	@Test
	public void startAndEnd(){
		Pattern p = Pattern.compile("aa*b");
		Matcher m = p.matcher("aaaaaaaabbbbbaaaaab");
		m.find();
		int start = m.start();
		int end = m.end();
		System.out.println("start : "+start);
		System.out.println("end : " + end);
	}
	
	/**
	 * 找到第一个符合条件的子字符串的起始位置和最后位置
	 */
	@Test
	public void allStartAndEnd(){
		Pattern p = Pattern.compile("aa*b");
		Matcher m = p.matcher("aaaaaaaabbbbbaaaaab");
		while(m.find()){
			int start = m.start();
			int end = m.end();
			System.out.println("start : "+start);
			System.out.println("end : " + end);
		}
	}
	
	/**
	 * 找到符合第二个分组规则的第一个子字符串
	 */
	@Test
	public void groups(){
		Pattern p = Pattern.compile("(a)(aa*b)");
		Matcher m = p.matcher("aaaaaaaabbbbbaaaaab");
		m.find();
		String result = m.group(2);
		System.out.println(result);
	}
	
	/**
	 * 找到符合第二个分组规则的所有子字符串
	 */
	@Test
	public void allGroups(){
		Pattern p = Pattern.compile("(a)(aa*b)");
		Matcher m = p.matcher("aaaaaaaabbbbbaaaaab");
		while(m.find()){
			String result = m.group(2);
			System.out.println(result);
		}
	}
}

 

工作中常用的正则表达式总结

在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求。所以我最近把开发中常用的一些正则表达式整理了一下,在这里分享一下。就当作笔记 1.基础 \d 匹配一个数字字符。等价于[0...
  • bwf_erg
  • bwf_erg
  • 2017年04月16日 20:19
  • 141

常用的正则表达式规则和基本规范

[正则表达式]文本框输入内容控制   2 整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$   3 只能输入数字:"^[0-9]*$"。   4 只能输入n位的数字:"^\d{n}$"...
  • itworkermk
  • itworkermk
  • 2016年03月29日 11:36
  • 576

常用正则表达验证

一、校验数字的表达式 1 数字:^[0-9]*$  2 n位的数字:^\d{n}$ 3 至少n位的数字:^\d{n,}$  4 m-n位的数字:^\d{m,n}$  5 ...
  • qq_34641685
  • qq_34641685
  • 2017年05月11日 22:00
  • 49

js常用正则表达式

/判断输入内容是否为空     function IsNull(){         var str = document.getElementById('str').value.trim();   ...
  • w2393040183
  • w2393040183
  • 2016年07月23日 16:27
  • 869

常用正则表达(二)

1.    平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用:  2.    "^\d+$"  //非负整数(正整数 + 0)  3.    "^[0-9]*[1-9][...
  • chinabhlt
  • chinabhlt
  • 2013年04月17日 21:16
  • 565

常用正则表达

正则表达式非常有用,查找、匹配、处理字符串、替换和转换字符串,输入输出等。而且各种语言都支持,例如.NET正则库,JDK正则包, Perl, JavaScript等各种脚本语言都支持正则表达式。 ...
  • qing101hua
  • qing101hua
  • 2016年12月14日 14:51
  • 186

常用正则表达

一、校验数字的表达式 数字:^[0-9]*$ n位的数字:^\d{n}$ 至少n位的数字:^\d{n,}$ m-n位的数字:^\d{m,n}$ ...
  • marunshengabc
  • marunshengabc
  • 2016年01月12日 11:42
  • 198

Java 常用正则表达

项目中常常桥面的应用正则表达式,会起到意想不到的效果,可以提高你的代码精简度,是你的效率提高。下面我们就来收集下常用的正则表达式,欢迎转载分享。 "^\d+$"  //非负整数(正整数 + 0) ...
  • klaus1983
  • klaus1983
  • 2013年10月10日 16:39
  • 397

[转]常用正则表达(二)

1.    平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用:  2.    "^\d+$"  //非负整数(正整数 + 0)  3.    "^[0-9]*[1-9][...
  • clyhpove
  • clyhpove
  • 2013年11月06日 16:27
  • 316

基础正则表达式

1. 正则表达式 正则表达式是处理字符串的方法,以行为单位进行处理。 2. 基础正则表达式字符 使用下面的特殊字符 语系对正则表达式的影响 不同语系的编码数据并不相同。 例如英文大小写编码:...
  • u014285882
  • u014285882
  • 2014年09月07日 12:10
  • 1019
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:正则表达常用的方法
举报原因:
原因补充:

(最多只允许输入30个字)