首頁 > Java > java教程 > 主體

Java 軟體工程師的正規表示式

Mary-Kate Olsen
發布: 2024-11-01 01:52:28
原創
425 人瀏覽過

Regex for a Java Software Engineer

為什麼我需要正規表示式?

正規表示式是幫助我們搜尋文字中特定序列的模式。在 Java 中,它們與 java.util.regex 套件中的類別一起使用。
使用正規表示式,我們可以尋找模式、取代文字並驗證輸入,而無需添加太多程式碼。

基本文法

讓我們回顧一下一些常見的正規表示式符號及其作用:

  1. 文字字元:最簡單的正規表示式只是純文字。 hello 符合字串中任何出現的 hello。

  2. 通配符:
    .:匹配任何單一字元(h.llo 匹配 hello、hallo、hxllo)。

  3. 字符集:
    [abc]:符合括號內的任意字元(h[aeiou]llo 符合 hello、hallo)。
    [a-z]:符合從a到z的任何小寫字母。

  4. 量詞:
    *:將其後面的字母配對零次或多次出現(go*gle 符合 google、ggle、gooooooogle)。
    :配對一次或多次出現(go gle 符合 google,gooogle 但不符合 ggle)。
    ?: 符合其後面的字母出現零次或一次(colo?ur 匹配 colurand color)。

  5. 錨點:
    ^:表示一行的開始(^hello 符合任何以 hello 開頭的行)。
    $:表示一行的結束(world$符合任何以world結尾的行)。

  6. 群組:
    (abc):將多個字元分組為一個單元((ha) 匹配 ha、haha、hahaha)。

  7. 轉義字元:
    某些字元(如 . 或 *)具有特殊含義,因此請在它們前面加上反斜線以按字面意思使用它們。例如, 。將匹配文字點。

簡短的例子:

Pattern:編譯正規表示式並在文字中進行比對。
匹配器:將模式應用於特定文字並協助尋找匹配項。

以下是這些類別如何協同工作的快速範例:

導入java.util.regex.*;

import java.util.regex.*;

public class RegexBasicsDemo {
    public static void main(String[] args) {
        String text = "hxllo hallo hbllllllo hello";
        Pattern pattern = Pattern.compile("h.llo");
        Matcher matcher = pattern.matcher(text);
        while (matcher.find()) {
            System.out.println("Wildcard match found: " + matcher.group());
        }
   }
}
登入後複製

會印什麼:

  • 找到通配符匹配:hxllo
  • 找出通配符匹配:hallo
  • 找到通配符匹配:你好
import java.util.regex.*;

public class RegexReplaceExample {
    public static void main(String[] args) {

        String text = "hello hzllo hallo hillo";
        Pattern pattern = Pattern.compile("h[aeiou]llo");
        Matcher matcher = pattern.matcher(text);

        String result = matcher.replaceAll("hi");

        System.out.println("Original text: " + text);
        System.out.println("Text after replacement: " + result);
    }
}
登入後複製

會印什麼:

  • 原文:hello hzllo Hallo hillo
  • 替換後的文字:hi hzllo hi hi

有用的 Java 正規表示式方法

  • matches():檢查整個文字是否與正規表示式模式相符。
  • find():搜尋文字中模式的出現(當且僅當輸入序列的子序列與此匹配器的模式匹配時傳回 true)
  • group():呼叫find()後傳回符合的文字。
  • ReplaceAll():用替換字串取代文字中的符合項目

我對正規表示式的看法

身為 Java 開發人員,我非常欣賞正規表示式在文字處理方面的強大功能。令人驚訝的是,一行精心設計的正規表示式如何能夠處理原本可能需要整個程式碼區塊的任務。對於直接匹配,正規表示式感覺很完美:它簡潔、高效,非常適合驗證格式或提取模式等事情。

但我知道不是每個人都有同樣的感覺。正規表示式可能遠非直觀,當模式開始變得複雜時,可讀性就會受到影響。創造像魔法一樣工作的模式很容易,但其他人(甚至你自己,稍後,在你度過一個愉快的假期回來後)幾乎不可能一眼就能理解。複雜的模式很快就會變成「只寫」程式碼。

在這些情況下,我發現最好將驗證分解為更小、更簡單的步驟。這讓事情變得更加清晰,也讓其他人更容易遵循邏輯。雖然正規表示式在 Java 中是一個非常有價值的工具,但我認為最好在使用時有所限制,尤其是在團隊環境中。畢竟,編寫可維護的程式碼意味著要考慮下一個會閱讀它的人。

以上是Java 軟體工程師的正規表示式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!