正则表达式工具类

一个利用正则表达式来从文本中过滤提取数据的工具类。可以用来抓取网页后过滤所需的文本。^_^

正则表达式语法规则可参考:http://blog.csdn.net/clementad/article/details/46661279

代码如下:

package com.xjj.util;

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

/**
 * 正则表达式工具
 * @author XuJijun
 *
 */
public class RegexUtils {

	/**
	 * 使用正则表达式REGEX从文本INPUT(比如html文档)中获取匹配的字符串
	 * @param INPUT
	 * @param REGEX
	 * @return 匹配到的所有字符串
	 */
	public static List<String> getContentByPattern(String INPUT, String REGEX){
		List<String> resultList = new ArrayList<>();
		Pattern p = Pattern.compile(REGEX); //根据正则表达式构造一个Pattern对象
		Matcher m = p.matcher(INPUT);		//利用patter对象为被匹配的文本构造一个Matcher对象
		while(m.find()){ //如果在任何位置中发现匹配的字符串……
			resultList.add(m.group()); //保存匹配到的字符串
		}
		return resultList;
	}

	/**
	 * 使用正则表达式REGEX从文本INPUT中获取第一个匹配的字符串
	 * @param INPUT
	 * @param REGEX
	 * @return
	 */
	public static String getFirstMatch(String INPUT, String REGEX){
		return getContentByPattern(INPUT, REGEX).get(0);
	}

	/**
	 * 根据正则表达式REGEX,把INPUT中所有被匹配到的字符串替换成REPLACE
	 * @param INPUT
	 * @param REGEX
	 * @param REPLACE
	 */
	public static String replaceContentByPattern(String INPUT, String REGEX, String REPLACE){
		Pattern p = Pattern.compile(REGEX);
		Matcher m = p.matcher(INPUT);
		return m.replaceAll(REPLACE);
	}

	/**
	 * 从INPUT中找到第一串数字
	 * @param INPUT
	 * @return
	 */
	public static String findFirstNumber(String INPUT){
		Pattern p=Pattern.compile("\\d+");
		Matcher m=p.matcher(INPUT);
		if(m.find()){
			return m.group();
		}else {
			return null;
		}
	}
}

相关的测试用例和结果:

用例1:

	@Test
	public void getContentByPattern(){
		String INPUT = "我是123,不是678。";
		String REGEX = "\\d+";

		List<String> result = RegexUtils.getContentByPattern(INPUT, REGEX);
		System.out.println(result);
	}

结果:

[123, 678]

用例2:

	@Test
	public void getFirstMatch(){
		String INPUT = "我是123,不是678。";
		String REGEX = "不是\\d+";

		String result = RegexUtils.getFirstMatch(INPUT, REGEX);
		System.out.println(result);
	}

结果:

不是678

用例3:

	@Test
	public void replaceContentByPattern(){
		String INPUT = "我是123,不是678。";
		String REGEX = "123";

		String result = RegexUtils.replaceContentByPattern(INPUT, REGEX, "100");
		System.out.println(result);
	}

结果:

我是100,不是678。

用例4:

	@Test
	public void findFirstNumber(){
		String INPUT = "我是123,不是678。";

		String result = RegexUtils.findFirstNumber(INPUT);
		System.out.println(result);
	}

结果:

123

(原创文章,转载请注明转自Clement-Xu的博客)

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-08 09:37:15

正则表达式工具类的相关文章

Hutool之正则表达式工具类——ReUtil

前言 在文本处理中,正则表达式几乎是全能的,但是Java的正则表达式有时候处理一些事情还是有些繁琐,所以我封装了部分常用功能.就比如说我要匹配一段文本中的某些部分,我们需要这样做: Pattern pattern = Pattern.compile(regex, Pattern.DOTALL); Matcher matcher = pattern.matcher(content); if (matcher.find()) { String result= matcher.group(); } 其

正则表达式工具类单例

/// <summary> /// 正则表达式工具类单例 /// </summary> public class RegexTool { private static volatile RegexTool regex = null; private static object syncRoot = new Object(); /// <summary> /// 注册需要转换的类型 /// </summary> private RegexTool() { }

编写一个简单的正则表达式工具类

跟着视频的讲解,也亲手敲了这么一个正则表达式的类,感觉很不错,真是温故而知新,本来想把注释写的逼格高一点的,今天晚了有点累,先简单的写一下,有时间了再完善完善. <?php class regexTool{ //内置一些常用的正则表达式 private $validate = array( 'require'   =>  '/.+/', 'email'     =>  '/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/', 'url'    

Android 中正则表达式工具类

1 package com.example.administrator.magiclamp.utils; 2 3 import java.util.regex.Pattern; 4 5 /** 6 * 校验器:利用正则表达式校验邮箱.手机号等 7 * @author Mr.duan 8 */ 9 public class Validator { 10 /** 11 * 正则表达式:验证用户名(不包含中文和特殊字符)如果用户名使用手机号码或邮箱 则结合手机号验证和邮箱验证 12 */ 13 pub

Java常用工具类之RegexpUtils,正则表达式工具类

package com.test.core.util; import org.apache.log4j.Logger; import org.apache.oro.text.regex.MalformedPatternException; import org.apache.oro.text.regex.Pattern; import org.apache.oro.text.regex.PatternCompiler; import org.apache.oro.text.regex.Patte

java HTML字符串正则表达式使用工具类

原文:java HTML字符串正则表达式使用工具类 代码下载地址:http://www.zuidaima.com/share/1550463453416448.htm HTML相关的正则表达式工具类 包括过滤HTML标记,转换HTML标记,替换特定HTML标记 package com.zuidaima.common.util; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * <p> * Title: H

实用工具类--第三方开源--Lazy

下载地址 :https://github.com/ddwhan0123/Lazy 工具 描述 AnimationUtils 动画工具类 AppUtils APP相关信息工具类 AssetDatabaseOpenHelper 目录资源获取 Base64 加密 BitmapUtil 获取Bitmap和对Bitmap的操作 ChannelUtil 获取市场号 Colors 颜色工具类 包括常用的色值 DES DES加密解密类 DataCleanManager 本应用数据清除管理器 DatabaseEx

Android常用正则工具类

此类提供日常开发中常用的正则验证函数,比如:邮箱.手机号.电话号码.身份证号码.日期.数字.小数.URL.IP地址等.使用Pattern对象的matches方法进行整个字符匹配,调用该方法相当于:        Pattern p = Pattern.compile(regex);        Matcher m = p.matcher(input);        return m.matches();每个正则可能还有待优化的地方,您如有更好的方式实现某一个功能的验证,欢迎提出来大家一起讨论

.net使用正则表达式校验、匹配字符工具类

开发程序离不开数据的校验,这里整理了一些数据的校验.匹配的方法: 1 /// <summary> 2 /// 字符(串)验证.匹配工具类 3 /// </summary> 4 public class ValidatorTools 5 { 6 #region 匹配方法 7 /// <summary> 8 /// 验证字符串是否匹配正则表达式描述的规则 9 /// </summary> 10 /// <param name="inputStr&