[Java] 简化正则表达式的使用

使用
RegexString.with(string).pattern(pattern).start() + 后续操作(matches,find或者是replace)
源码
package com; import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern; /**
* @author YouXianMing1987@iCloud.com 用于简化处理正则表达式
*/
public class RegexString { private String string;
private Pattern pattern;
private Matcher matcher; ////////////////////// Constructor ////////////////////// /**
* 正则表达式对象
*
* @param str
* 初始化用的字符串
*/
public RegexString(String str) {
setString(Objects.requireNonNull(str));
} ////////////////////// Normal Method ////////////////////// /**
* 设置正则表达式的pattern
*
* @param regex
* 正则表达式语句
* @return RegexString
*/
public RegexString pattern(String regex) {
setPattern(Pattern.compile(regex));
return this;
} /**
* 设置正则表达式的pattern
*
* @param regex
* 正则表达式语句
* @param flags
* 正则表达式flag值
* @return RegexString
*/
public RegexString pattern(String regex, int flags) {
setPattern(Pattern.compile(regex, flags));
return this;
} /**
* 正则表达式对象开始匹配(设置完pattern后需要自行此语句才能做后续操作)
*
* @return RegexString
*/
public RegexString start() {
setMatcher(pattern.matcher(string));
return this;
} /**
* 进行文本替换
*
* @param replacement
* 用来替换的文本
* @return 替换后的字符串
*/
public String replace(String replacement) {
return getMatcher().replaceAll(replacement);
} /**
* 判断是否匹配(一次性匹配全部文本,不分步)
*
* @return 匹配了返回true,没有匹配返回false.
*/
public boolean matches() {
return getMatcher().matches();
} /**
* 判断是否匹配(分步匹配文本,请结合while循环使用)
*
* @return 找到了返回true,没有找到返回false.
*/
public boolean find() {
return getMatcher().find();
} /**
* find()操作成功后,可以通过matchString()获取匹配的字符串
*
* @return 匹配的字符串
*/
public String matchString() {
return getMatcher().group();
} /**
* find()操作成功后,可以通过matchStart()获取匹配的起始位置
*
* @return 匹配的起始位置
*/
public int matchStart() {
return getMatcher().start();
} /**
* find()操作成功后,可以通过matchEnd()获取匹配的结束位置
*
* @return 匹配的起始位置
*/
public int matchEnd() {
return getMatcher().end();
} ////////////////////// Static Method ////////////////////// /**
* [静态方法] 便利构造器
*
* @param str
* 初始化用的字符串
* @return RegexString
*/
public static RegexString with(String str) {
return new RegexString(str);
} ////////////////////// Getter & Setter ////////////////////// public String getString() {
return string;
} public void setString(String string) {
this.string = string;
} public Pattern getPattern() {
return pattern;
} public void setPattern(Pattern pattern) {
this.pattern = pattern;
} public Matcher getMatcher() {
return matcher;
} public void setMatcher(Matcher matcher) {
this.matcher = matcher;
}
}
示例
package com;
public class Main {
public static void main(String args[]) {
// 查找文本
{
String src = "This is my small example string which I'm going to use for pattern matching.";
RegexString string = RegexString.with(src).pattern("\\w+").start();
while (string.find()) {
System.out.println(string.matchStart() + "," + string.matchEnd() + " : " + string.matchString());
}
}
// 匹配
{
String src = "This is my small example string which I'm going to use for pattern matching.";
if (RegexString.with(src).pattern("^This.+$").start().matches()) {
System.out.println("Yes");
}
}
// 替换文本
{
String src = "This is my small example string which I'm going to use for pattern matching.";
System.out.println(RegexString.with(src).pattern("\\w+").start().replace("Regex"));
}
// 去掉字符串首尾的空格,以及字符串中间多余的字符串
{
String src = " This is my small example string which I'm going to use for pattern matching. ";
String tmp = RegexString.with(src).pattern("^\\s+|\\s+$").start().replace("");
String des = RegexString.with(tmp).pattern("\\s+").start().replace(" ");
System.out.println("\"" + des + "\"");
}
}
}
[Java] 简化正则表达式的使用的更多相关文章
- Java面向对象 正则表达式
Java面向对象 正则表达式 知识概要: (1)正则表达式的特点 (2)正则表达的匹配 (3)正则表达式的切割,替换,获取 (4)正则表达式的练习 正则表达式:符合 ...
- JAVA中正则表达式学习总结
一.JAVA中正则表达式相关的类 1. java.util.regex.Pattern 该类用于编译模式,模式可以理解为一个正则表达式,比如:a*b. 用法如下: // 创建模式 Pattern p ...
- java中正则表达式基本用法
正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为 ...
- java基础---->java中正则表达式二
跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...
- Java的正则表达式
package RegexTest; /** * Created by hu on 2016/3/29. */ /* * Java的正则表达式 在正则表达式中,用\d表示一位数字,如果在其它语言中使用 ...
- Java与正则表达式
Java与正则表达式 标签: Java基础 正则 正如正则的名字所显示的是描述了一个规则, 通过这个规则去匹配字符串. 学习正则就是学习正则表达式的语法规则 正则语法 普通字符 字母, 数字, 汉字, ...
- Java中正则表达式去除html标签
Java中正则表达式去除html的标签,主要目的更精确的显示内容,比如前一段时间在做类似于博客中发布文章功能,当编辑器中输入内容后会将样式标签也传入后台并且保存数据库,但是在显示摘要的时候,比如显示正 ...
- Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码正则表达式
Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码校验正则表达式 ============================== ©Copyright 蕃薯耀 2017年11 ...
- JAVA中正则表达式常用的四个方法
JAVA中正则表达式处理字符串的四个常用方法:匹配.分割.替换.截取.其跟字符串的常用函数相似,但是使用正则表达式会更简单.更加简洁.下面是具体的例子: public class TestRegex ...
随机推荐
- Python-JS基础(基础结构~函数)
程序本质上分为三大结构: 顺序结构.分支结构.循环结构JavaScript中的程序结构也是这样,下面我们来分别介绍JS中的三种基本程序结构:我们上篇博客中介绍到的使用逻辑运算符&&实现 ...
- WPF设置对象隐藏、不可用
设置隐藏时,这里将控件分为两类, 1.普通的按钮.下拉框等,根据控件的Name进行查找,设置IsEnabled为false; 2.ListView中嵌套控件,直接将列隐藏,根据GridViewColu ...
- 100以内与7有关的数(for和if)
- STL整理之set
转载请注明出处,部分内容引自李煜东<算法竞赛进阶指南> 前置知识: C++.C语言入门 Set是什么 Set是C++STL中提供的容器,set是数学上的集合——具有唯一性,即每个元素 ...
- hdu2586 lca倍增法
倍增法加了边的权值,bfs的时候顺便把每个点深度求出来即可 #include<iostream> #include<cstring> #include<cstdio> ...
- 注解工具ButterKnife用法和注意点
// implementation 'com.android.support:appcompat-v7:28.0.0-Beta1' // implementation 'com.android.sup ...
- python爬取糗百内容
#-*- coding: utf-8 -*- import urllib import urllib2 import re #页面为1 page=1 url='http://www.qiushibai ...
- [解决]IP地址非法,请接入联通热点后重新获取
在使用联通chinaunicom WLAN上网时,在弹出的登陆界面后输入账号.密码,点登陆,显示IP地址非法,请接入联通热点后重新获取.现在在其他地方看到解决办法连接chinaunicom,弹出登陆界 ...
- Mysql mysqld_safe启动与myslqd启动坑
一.用mysqld_safe启动时候无法看到报错信息. 二.用mysqld启动时候可以看到日志实时打印.
- 015 在大数据中,关于mapreduce的粗略优化,以及mapreduce的处理过程解释
使用的案例是wordcountmapreduce的程序演示 一: 1.源程序 2.优化的切入点 3.优化的部分代码 二:wordcount的处理过程 1.重点 一个块对应一个map任务. 而做单词统计 ...