温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java 中使用正则表达式的方法

发布时间:2020-11-18 15:41:34 来源:亿速云 阅读:139 作者:Leah 栏目:编程语言

本篇文章给大家分享的是有关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 中使用正则表达式的方法,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI