crawler_工具类_RegexUtils_正则帮助类
package com.cph.crawler.core.utils; import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; /**
*
* @ClassName: RegexUtils
* @Description: 正则帮助类
* @author cphmvp
* @date 2013-9-9 下午3:48:59<br>
* 适合单次抽取结果,不适合遍历抽取
*
*/
public final class RegexUtils {
private RegexUtils() { } private static Log logger = LogFactory.getLog(RegexUtils.class);
private static Pattern defaultPattern;
private static Matcher defaultMatcher;
private static final String NOT_MATCHER_DATA = "没有匹配到对应数据"; /**
* 返回单行结果集
*
* @param input
* @param regex
* @param group
* @return
*/
public static String getString(String input, Pattern pattren, int group) {
if (pattren.toString().equals(
"<span class=\"l\">当前位置:([\\s\\S]*?)</span>")) {
System.out.println("warn");
}
String result = "";
String splitStr = "⊙";
defaultMatcher = pattren.matcher(input);
while (defaultMatcher.find()) {
result = defaultMatcher.group(group).trim() + "" + splitStr;
}
result = result.trim().replaceAll("</?[^>]+>", "");
result = result.replaceAll(">", ">");
result = result.replaceAll("\r\n", "");
result = result.replaceAll("\\r\\n", "");
result = result.replaceAll("\\s", "");
result = result.replaceAll(" ", " ");
result = result.replace("\n", "");
result = result.replace("\t", "");
result = result.replace("^p", "");
result = result.replaceAll("⊙", " ");
return result.trim();
} /**
* 返回单行结果集
*
* @param input
* @param regex
* @param group
* @return
*/
public static String getString(String input, String regex, int group) {
String result = " ";
defaultMatcher = getMatcher(input, regex);
while (defaultMatcher.find()) {
result = defaultMatcher.group(group).trim();
}
getLog(result);
return result;
} /**
* 获得可匹配对象
*
* @param input
* @param regex
* @return
*/
public static Matcher getMatcher(String input, String regex) {
defaultPattern = getPattern(regex);
defaultMatcher = defaultPattern.matcher(input);
return defaultMatcher;
} /**
* 获得模式对象
*
* @param regex
* @return
*/
public static Pattern getPattern(String regex) {
defaultPattern = Pattern.compile(regex);
return defaultPattern;
} /**
* 返回多行结果集
*
* @param input
* @param regex
* @param group
* @return
*/
public static List<String> getStringList(String input, String regex,
int group) {
List<String> resultList = new ArrayList<String>();
defaultMatcher = getMatcher(input, regex);
while (defaultMatcher.find()) {
resultList.add(defaultMatcher.group().trim());
}
if (resultList.size() < 1) {
logger.error(NOT_MATCHER_DATA);
}
return resultList;
} /**
* 返回多行结果集
*
* @param input
* @param regex
* @param group
* @return
*/
public static List<Integer> getIntList(String input, String regex, int group) {
List<Integer> resultList = new ArrayList<Integer>();
defaultMatcher = getMatcher(input, regex);
while (defaultMatcher.find()) {
resultList.add(Integer.parseInt(defaultMatcher.group().trim()));
}
if (resultList.size() < 1) {
logger.error(NOT_MATCHER_DATA);
}
return resultList;
} /**
* 返回多行结果集
*
* @param input
* @param regex
* @param group
* @return
*/
public static String getString(String input, String regex) {
String result = " ";
defaultMatcher = getMatcher(input, regex);
while (defaultMatcher.find()) {
result = defaultMatcher.group().trim();
}
getLog(result);
return result;
} /**
* 返回单行结果集
*
* @param input
* @param regex
* @param group
* @return
*/
public static int getInt(String input, String regex, int group) {
int result = -1;
defaultMatcher = getMatcher(input, regex);
while (defaultMatcher.find()) {
result = Integer.parseInt(defaultMatcher.group(group).trim());
}
getLog(result);
return result;
} /**
* 返回单行结果集
*
* @param input
* @param regex
* @param group
* @return
*/
public static int getInt(String input, String regex) {
int result = -1;
defaultMatcher = getMatcher(input, regex);
while (defaultMatcher.find()) {
result = Integer.parseInt(defaultMatcher.group().trim());
}
getLog(result);
return result;
} /**
* 匹配中国邮政编码
*
* @param postcode
* 邮政编码
* @return 验证成功返回true,验证失败返回false
*/
public static boolean checkPostcode(String postcode) {
String regex = "[1-9]\\d{5}";
return Pattern.matches(regex, postcode);
} private static void getLog(String result) {
if (result.trim().equals("")) {
logger.error(NOT_MATCHER_DATA);
}
} private static void getLog(Integer result) { if (-1 == result) {
logger.error(NOT_MATCHER_DATA);
}
}
}
crawler_工具类_RegexUtils_正则帮助类的更多相关文章
- 1、使用简单工厂模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程
1.使用简单工厂模式设计能够实现包含加法(+).减法(-).乘法(*).除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果.要求使用相关的工具绘制UML类图并严格按照类图的设计编写程 ...
- JAVA核心技术I---JAVA基础知识(工具类Arrays和Collections类)
一:工具类 –不存储数据,而是在数据容器上,实现高效操作 • 排序 • 搜索 –Arrays类 –Collection类 二:Arrays类(处理数组) (一)基本方法 –排序:对数组排序, sort ...
- java Pattern(正则)类
Pattern的静态方法matches 用于快速匹配字符串,该方法适合用于只匹配一次,且匹配全部字符串. Boolean b=Pattern.matches("^((13[0-9])|(15 ...
- Java工具类——日期相关的类
前言 在日常的开发工作当中,我们经常需要用到日期相关的类(包括日期类已经处理日期的类),所以,我就专门整理了一篇关于日期相关的类,希望可以帮助到大家. 正文 一.日期类介绍 在 Java 里面,操作日 ...
- Java工具类——数学相关的类
Java工具类--数学相关的类 在上一篇文章中,我们系统学习了 Java 里面的包装类,那么这篇文章,我们就来学习一下Java提供好的类--数学相关的类. 一.数学类介绍 在最早期学习 Java 基础 ...
- java自学第4期——:Scanner类、匿名对象介绍、Random类、ArrayList集合、标准类格式、String类、static静态、Arrays工具类、Math类(1)
一.Scanner类 1.api简介: 应用程序编程接口 2.Scanner类: 作用:获取键盘输入的数据 位置: java.util.Scanner. 使用:使用成员方法nextInt() 和 ne ...
- 使用工厂方法模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程序实
2.使用工厂方法模式设计能够实现包含加法(+).减法(-).乘法(*).除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果.要求使用相关的工具绘制UML类图并严格按照类图的设计编写程 ...
- C#工具:反射帮助类 泛型反射帮助类
反射帮助类 using System; using System.Reflection; using System.Data; using System.Drawing; using System.R ...
- python关于类和正则表达( 编写一个程序(类))
1.什么是类对象,实例对象 类对象:类名实例对象:类创建的对象 2.类属性: 就是类对象所拥有的属性,它被所有类对象的实例对象所共有,在内存中只存在一个副本.对于公有的类属性,在类外可以通过类对象和实 ...
随机推荐
- Mongodb安装和配置
Mongodb之安装配置 安装 Mongodb的下载地址为Mongodb官网.下载时.你能够选择是安装包或者是压缩包. 下载完毕后.双击安装包并安装. 安装完毕后.你能够在安装文件夹看到下图中所见的文 ...
- ORACLE—002:Create创作型
--用于工作的积累SQL ORACLE另外还有的类型.储过程.函数等的输入输入出. 以下看下创建. 使用方法 CREATE OR REPLACE TYPE 类型名称 AS OBJECT( 字段1 ...
- 读书时间《JavaScript高级程序设计》二:面向对象
接着上次的进度,开始看第6章. 第6章 面向对象的程序设计 理解对象 创建自定义对象最简单的方式就是创建一个 Object 的实例,然后为它添加属性和方法. var person = new Obje ...
- url参数中出现+、空格、=、%、&、#等字符的解决办法
url出现了有+,空格,/,?,%,#,&,=等特殊符号的时候,可能在服务器端无法获得正确的参数值,如何是好?解决办法将这些字符转化成服务器可以识别的字符,对应关系如下:URL字符转义 用其它 ...
- SDL2来源分析3:渲染(SDL_Renderer)
===================================================== SDL源代码分析系列文章上市: SDL2源码分析1:初始化(SDL_Init()) SDL2 ...
- jquery之ajax中国乱码的解决方案
$.ajax({ dataType : 'json',type : 'POST',url : 'http://localhost/test/test.do',data : {id: 1, type: ...
- ExtJS学习笔记:定义extjs类别
类的定义 Ext.define('Cookbook.Vehicle', { Manufacturer: 'Aston Martin', Model: 'Vanquish', getDetails: f ...
- jquery :操作iframe
原文 jquery :操作iframe 1. 内容里有两个ifame <iframe id="leftiframe"...</iframe> <iframe ...
- 理解Java虚拟机体系结构(转)
1 概述 众所周知,Java支持平台无关性.安全性和网络移动性.而Java平台由Java虚拟机和Java核心类所构成,它为纯Java程序提供了统一的编程接口,而不管下层操作系统是什么.正是得益于Jav ...
- windows下一个,OracleServiceXXX和Oracle 关系实例
其实,windows下的oracle,在oracle实例启动时,是全然依赖于 window服务中的OracleServiceXXX .这个XXX就是oracle的实例名(注意啊,不是数据库名称,而是实 ...