正規表示式中環視的簡單應用示例【基於java】

受到鼓舞人發表於2022-03-14

本文例項講述了正規表示式中環視的簡單應用。分享給大家供大家參考,具體如下:

由於開發工作需要對文字中內容進行過濾,刪除或替換掉一些無用的或不符合要求的資訊。於是發現一個問題,某一類工程性文字中,用到很多英文寫法相同、但含義不同的單位,需要將其分別轉為真實含義對應的漢字。比如:"粘度為17s,移動距離為350釐米,要求混凝土必須內實外光。振搗時間為30s。",很明顯第一個s是粘度的單位,第二s是時間單位,現在需要將文字中所有表示時間的s替換為“秒”,在朋友指引下,發現通過正規表示式中的環視可以方便實現這功能。

正規表示式中的環視,大家公認的基本原理是依據位置資訊來進行匹配。我認為,還可以把它理解為依據目標字元的上下文進行匹配。

具體的Java程式碼如下

package ccnu;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
public class regex {
  /**
   * @param args
   */
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    String tempHtmlString="粘度為17s,移動距離為350釐米,要求混凝土必須內實外光。振搗時間為30s。";
    Pattern p_html;
    Matcher m_html;
    String regEx = "([^粘度][u4e00-u9fa5]{1,10}(?<=[0-9]))s([^a-z]$)";
    p_html = Pattern.compile(regEx);
    m_html = p_html.matcher(tempHtmlString);
    String resultString="";
    try {
      resultString = m_html.replaceAll("$1秒");
    } catch (PatternSyntaxException ex) {
      // Syntax error in the regular expression
    } catch (IllegalArgumentException ex) {
      // Syntax error in the replacement text (unescaped $ signs?)
    } catch (IndexOutOfBoundsException ex) {
      // Non-existent backreference used the replacement text
    }
    System.out.println(resultString);
  }
}

結果:粘度為17s,移動距離為350釐米,要求混凝土必須內實外光。振搗時間為30秒。

PS:這裡再為大家提供2款非常方便的正規表示式工具供大家參考使用:

JavaScript正規表示式線上測試工具:

正規表示式線上生成工具:

希望本文所述對大家正規表示式學習有所幫助。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70015105/viewspace-2870875/,如需轉載,請註明出處,否則將追究法律責任。

相關文章