全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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正则表达式 Pattern和Matcher  # Java 正则表达式学习总结和一些小例子  # java中 利用正则表达式提取( )内内容  # java正则表达式提取数字的方法实例  # java正则表达式验证邮箱、电话号码示例  # Java/Js下使用正则表达式匹配嵌套Html标签  # 收集的一些常用java正则表达式  # Java正则表达式入门基础篇(新手必看)  # Java正则表达式过滤出字母、数字和中文  # 可以通过  # 判断是否  # 或者是  # 能做  # 没有找到  # 配了  # 找到了  # Pattern  # author  # Matcher  # param  # Constructor  # str  # requireNonNull  # setString  # public  # iCloud  # private 


相关文章: 如何在IIS中新建站点并配置端口与IP地址?  如何高效搭建专业期货交易平台网站?  南宁网站建设制作定制,南宁网站建设可以定制吗?  建站三合一如何选?哪家性价比更高?  常州自助建站工具推荐:低成本搭建与模板选择技巧  建站VPS配置与SEO优化指南:关键词排名提升策略  如何配置FTP站点权限与安全设置?  常州企业建站如何选择最佳模板?  ,网站推广常用方法?  高端建站如何打造兼具美学与转化的品牌官网?  济南专业网站制作公司,济南信息工程学校怎么样?  seo网站制作优化,网站SEO优化步骤有哪些?  建站之星CMS建站配置指南:模板选择与SEO优化技巧  网站制作话术技巧,网站推广做的好怎么话术?  大连网站设计制作招聘信息,大连投诉网站有哪些?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  如何在Tomcat中配置并部署网站项目?  如何快速打造个性化非模板自助建站?  建站主机数据库如何配置才能提升网站性能?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  开源网站制作软件,开源网站什么意思?  如何在Windows 2008云服务器安全搭建网站?  nginx修改上传文件大小限制的方法  兔展官网 在线制作,怎样制作微信请帖?  如何选择高性价比服务器搭建个人网站?  Android滚轮选择时间控件使用详解  哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?  建站之星后台密码遗忘?如何快速找回?  如何零成本快速生成个人自助网站?  建站之星收费标准详解:套餐费用及年费价格表一览  威客平台建站流程解析:高效搭建教程与设计优化方案  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  如何通过虚拟主机快速搭建个人网站?  建站之星展会模板:智能建站与自助搭建高效解决方案  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  常州自助建站:操作简便模板丰富,企业个人快速搭建网站  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  制作网站的基本流程,设计网站的软件是什么?  中山网站制作网页,中山新生登记系统登记流程?  成都网站制作报价公司,成都工业用气开户费用?  如何零基础开发自助建站系统?完整教程解析  如何快速完成中国万网建站详细流程?  岳西云建站教程与模板下载_一站式快速建站系统操作指南  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  如何在橙子建站中快速调整背景颜色?  高端云建站费用究竟需要多少预算?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。