Java正規表示式語法技巧:貪婪模式和非貪婪模式
#在使用Java的正規表示式時,經常會遇到需要匹配盡可能多字符或盡可能少字符的情況。這就需要使用貪婪模式和非貪婪模式來控制匹配的方式。本文將詳細介紹這兩種模式,並給出具體的程式碼範例。
一、貪婪模式
貪婪模式是預設的匹配方式。在貪婪模式下,正規表示式會盡可能地匹配字符,直到不滿足匹配條件為止。
例如,我們有以下文字:
String text = "abc abc abc";
我們想要符合中間的"abc"。可使用以下程式碼:
Pattern pattern = Pattern.compile(".*");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println(matcher.group());
}
輸出的結果是"abc abc abc",因為".*"使用了貪婪模式,會匹配盡可能多的字元。
二、非貪婪模式
非貪婪模式是透過在貪婪模式限定符後面加上"?"來實現的。在非貪婪模式下,正規表示式會盡可能少地匹配字符,直到滿足匹配條件為止。
以下是使用非貪婪模式的程式碼範例:
Pattern pattern = Pattern.compile(".*?");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println(matcher.group());
}
輸出的結果是"abc",這是因為".*?"使用了非貪婪模式,只匹配滿足條件的最小字元。
三、貪婪模式和非貪婪模式的應用場景
1.貪婪模式的應用場景
貪婪模式通常適用於需要盡可能匹配字元的情況。例如,我們想要匹配HTML文件中的所有標籤,預設使用貪婪模式可以一次匹配所有標籤。
String html = "
標題1
段落1
標題2
段落2
";Pattern pattern = Pattern.compile("<.>");
Matcher matcher = pattern.matcher(html);
while (matcher.find()) {
System.out.println(matcher.group());
}
輸出的結果是"
"、"
"、""、"
"、"p>","",""、"
"、"
"。2.非貪婪模式的應用場景
非貪婪模式通常適用於需要盡可能少地匹配字元的情況。例如,我們想要匹配一個句子中的所有單詞,預設使用非貪婪模式可以逐一匹配單字。
String sentence = "I love coding";
Pattern pattern = Pattern.compile("\b\w ?\b");
Matcher matcher = pattern.matcher(sentence);
while (matcher.find()) {
System.out.println(matcher.group());
}
#輸出的結果是"I"、"love"、"coding"。
綜上所述,貪婪模式和非貪婪模式在Java的正規表示式中是非常有用的。根據特定的需求,選擇合適的模式可以更好地實現匹配和提取所需的資訊。希望本文的程式碼範例能幫助讀者更好地理解和應用貪婪模式和非貪婪模式。
以上是掌握Java正規表示式的貪婪與非貪婪模式技巧的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Atom編輯器mac版下載
最受歡迎的的開源編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

WebStorm Mac版
好用的JavaScript開發工具