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.类属性: 就是类对象所拥有的属性,它被所有类对象的实例对象所共有,在内存中只存在一个副本.对于公有的类属性,在类外可以通过类对象和实 ...
随机推荐
- JCombobox组合框效果实现(转)
JCombobox是Swing中比较常用的控件,它显示一个项列表,扩展的是ListModel接口的模型,它的显示绘制器通过实现ListCellBenderer接口来绘制列表单元,下面介绍 ①普通应用例 ...
- 使用GDB在远程开发机上调试
由于一些环境限制,很多学生很可能需要在开发机器上调试.但是,由于对计算机资源的开发限制.在本地的直接机的发展GDB环境配置问题已经成为,其实,我们可以利用这段时间GDB自带gdbserver工具将能够 ...
- Myeclipse 10/2014 配置插件(svn、maven、properties、velocity)方法
一.构造SVN具体说明 什么是SVN? 管理软件开发过程中的版本控制工具. 以下会以两种方式来介绍怎么安装svn,myeclipse安装SVN插件步骤.以myeclipse 2014为例,第一种是最常 ...
- Android 4.4环境搭建——Android SDK下载与安装
学习开发Android应用程序,须要下载安装Android SDK.在Android的官方站点的二级域名http://developer.android.com/index.html中.能够下载到完整 ...
- Java就业前景怎么样?学了后好找工作吗?
不知道大家对Java就业前景了解多少.随着信息化的发展.IT培训受倒了越来越多人的追捧.在开发领域,JAVA培训成为了很多人的首选!JAVA应用广泛.JAVA培训就业前景良好. 眼下.尽管JAVA人才 ...
- FastReport的再次使用
FastReport.Net是一款功能齐全的报表分析解决方案. 前两年工作的时候就是使用FastReport进行报表设计,只是当时使用的时候都是调用别人写好的帮助类,直接调用即可.当时让人觉得不明觉厉 ...
- 《Lua游戏开发实践指南》读后感
书籍地址:http://book.douban.com/subject/20392269/ 一句话点评该书:想用Lua作游戏脚本开发的同学值得一读! (一)本书特点 市面专门讲Lua的中文书籍非常少, ...
- Struts1.X与Spring集成——第一种方案
spring+struts(第一种方案) 集成原理:在Action中取得BeanFactory,通过BeanFactory取得业务逻辑对象,调用业务逻辑方法. 一,新建一个项目Spring_Strut ...
- 【iOS7一些总结】9、与列表显示(在):列表显示UITableView
列表显示,顾名思义它是在一个列表视图的形式显示在屏幕上的数据的内容.于ios在列表视图UITableView达到.这个类在实际应用中频繁,是很easy理解.这里将UITableView的主要使用方法总 ...
- 关于int全区变量读写的原子性
关于int全区变量读写的原子性 关于int变量的读写是否原子性网上有非常多讨论,貌似不同平台不同,这里自己做实如今arm9平台測试.这里要注意原子性并不是指一条汇编才原子,实际上即使一次赋值编 ...