使用

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] 简化正则表达式的使用的更多相关文章

  1. Java面向对象 正则表达式

     Java面向对象 正则表达式 知识概要:                (1)正则表达式的特点 (2)正则表达的匹配 (3)正则表达式的切割,替换,获取 (4)正则表达式的练习 正则表达式:符合 ...

  2. JAVA中正则表达式学习总结

    一.JAVA中正则表达式相关的类 1. java.util.regex.Pattern 该类用于编译模式,模式可以理解为一个正则表达式,比如:a*b. 用法如下: // 创建模式 Pattern p ...

  3. java中正则表达式基本用法

    正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模式,它 用以描述在查找文字主体时待匹配的一个或多个字符串.正则表达式作为 ...

  4. java基础---->java中正则表达式二

    跟正则表达式相关的类有:Pattern.Matcher和String.今天我们就开始Java中正则表达式的学习. Pattern和Matcher的理解 一.正则表达式的使用方法 一般推荐使用的方式如下 ...

  5. Java的正则表达式

    package RegexTest; /** * Created by hu on 2016/3/29. */ /* * Java的正则表达式 在正则表达式中,用\d表示一位数字,如果在其它语言中使用 ...

  6. Java与正则表达式

    Java与正则表达式 标签: Java基础 正则 正如正则的名字所显示的是描述了一个规则, 通过这个规则去匹配字符串. 学习正则就是学习正则表达式的语法规则 正则语法 普通字符 字母, 数字, 汉字, ...

  7. Java中正则表达式去除html标签

    Java中正则表达式去除html的标签,主要目的更精确的显示内容,比如前一段时间在做类似于博客中发布文章功能,当编辑器中输入内容后会将样式标签也传入后台并且保存数据库,但是在显示摘要的时候,比如显示正 ...

  8. Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码正则表达式

    Java 常用正则表达式,Java正则表达式,Java身份证校验,最新手机号码校验正则表达式 ============================== ©Copyright 蕃薯耀 2017年11 ...

  9. JAVA中正则表达式常用的四个方法

    JAVA中正则表达式处理字符串的四个常用方法:匹配.分割.替换.截取.其跟字符串的常用函数相似,但是使用正则表达式会更简单.更加简洁.下面是具体的例子: public class TestRegex ...

随机推荐

  1. PYTHON-模块定义 搜索路径

    模块是什么: ***** 模块 是一系列功能的集合体 一个py文件就是一个模块 一个函数就是一个功能 例如 A.py 文件名A.py 模块名 A 模块有哪些来源 内置 第三方 自定义 模块有四种通用的 ...

  2. Android ImageView 的scaleType 属性图解

    ImageView 是 Android 中最常用的控件之一,而在使用ImageView时,必不可少的会使用到它的scaleType属性.该属性指定了你想让ImageView如何显示图片,包括是否进行缩 ...

  3. ambari下的flume和kafka整合

    1.配置flume #扫描指定文件配置 agent.sources = s1 agent.channels = c1 agent.sinks = k1 agent.sources.s1.type=ex ...

  4. php三种常用的加密解密算法

    方法一: /** * @param $string 要加密/解密的字符串 * @param string $operation 类型,ENCODE 加密:DECODE 解密 * @param stri ...

  5. jeecg Export导出图片到excel

    import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.File; impo ...

  6. P3331 [ZJOI2011]礼物(GIFT)

    题解: 首先转化为平面问题 对于每一个z,f(x,y)的值为它能向上延伸的最大高度 ...莫名其妙想出来的是n^4 以每个点作为右下边界n^3枚举再o(n)枚举左下边界计算z的最大值 然而很显然这种做 ...

  7. Codeforces 247D Mike and Fish

    Mike and Fish 我们可以把这个模型转换一下就变成有两类点,一类是X轴, 一类是Y轴, 每个点相当于对应的点之间建一条边, 如果这条边变红两点同时+1, 变蓝两点同时-1. 我们能发现这个图 ...

  8. Python yaml模块

    引用自:https://www.cnblogs.com/shaosks/p/7344771.html 一.简介 YAML 语言(发音 /ˈjæməl/ )的设计目标,就是方便人类读写.它实质上是一种通 ...

  9. POI搜索简介

    用户输入——用户输出-----------------------------------------------------------而POI搜索引擎,需要做的就是拿到输入条件,给出用户比较满意的 ...

  10. POJ 3304 Segments (叉乘判断线段相交)

    <题目链接> 题目大意: 给出一些线段,判断是存在直线,使得该直线能够经过所有的线段.. 解题思路: 如果有存在这样的直线,过投影相交区域作直线的垂线,该垂线必定与每条线段相交,问题转化为 ...