溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java 中使用正則表達(dá)式的方法

發(fā)布時(shí)間:2020-11-18 15:41:34 來(lái)源:億速云 閱讀:154 作者:Leah 欄目:編程語(yǔ)言

本篇文章給大家分享的是有關(guān)Java 中使用正則表達(dá)式的方法,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

使用

RegexString.with(string).pattern(pattern).start() + 后續(xù)操作(matches,find或者是replace)

源碼

package com;

import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author YouXianMing1987@iCloud.com 用于簡(jiǎn)化處理正則表達(dá)式
 */
public class RegexString {

  private String string;
  private Pattern pattern;
  private Matcher matcher;

  ////////////////////// Constructor //////////////////////

  /**
   * 正則表達(dá)式對(duì)象
   * 
   * @param str
   *      初始化用的字符串
   */
  public RegexString(String str) {
    setString(Objects.requireNonNull(str));
  }

  ////////////////////// Normal Method //////////////////////

  /**
   * 設(shè)置正則表達(dá)式的pattern
   * 
   * @param regex
   *      正則表達(dá)式語(yǔ)句
   * @return RegexString
   */
  public RegexString pattern(String regex) {
    setPattern(Pattern.compile(regex));
    return this;
  }

  /**
   * 設(shè)置正則表達(dá)式的pattern
   * 
   * @param regex
   *      正則表達(dá)式語(yǔ)句
   * @param flags
   *      正則表達(dá)式flag值
   * @return RegexString
   */
  public RegexString pattern(String regex, int flags) {
    setPattern(Pattern.compile(regex, flags));
    return this;
  }

  /**
   * 正則表達(dá)式對(duì)象開(kāi)始匹配(設(shè)置完pattern后需要自行此語(yǔ)句才能做后續(xù)操作)
   * 
   * @return RegexString
   */
  public RegexString start() {
    setMatcher(pattern.matcher(string));
    return this;
  }

  /**
   * 進(jìn)行文本替換
   * 
   * @param replacement
   *      用來(lái)替換的文本
   * @return 替換后的字符串
   */
  public String replace(String replacement) {
    return getMatcher().replaceAll(replacement);
  }

  /**
   * 判斷是否匹配(一次性匹配全部文本,不分步)
   * 
   * @return 匹配了返回true,沒(méi)有匹配返回false.
   */
  public boolean matches() {
    return getMatcher().matches();
  }

  /**
   * 判斷是否匹配(分步匹配文本,請(qǐng)結(jié)合while循環(huán)使用)
   * 
   * @return 找到了返回true,沒(méi)有找到返回false.
   */
  public boolean find() {
    return getMatcher().find();
  }

  /**
   * find()操作成功后,可以通過(guò)matchString()獲取匹配的字符串
   * 
   * @return 匹配的字符串
   */
  public String matchString() {
    return getMatcher().group();
  }

  /**
   * find()操作成功后,可以通過(guò)matchStart()獲取匹配的起始位置
   * 
   * @return 匹配的起始位置
   */
  public int matchStart() {
    return getMatcher().start();
  }

  /**
   * find()操作成功后,可以通過(guò)matchEnd()獲取匹配的結(jié)束位置
   * 
   * @return 匹配的起始位置
   */
  public int matchEnd() {
    return getMatcher().end();
  }

  ////////////////////// Static Method //////////////////////

  /**
   * [靜態(tài)方法] 便利構(gòu)造器
   * 
   * @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 中使用正則表達(dá)式的方法,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI