正則表達式非捕獲分組?:

一個使用 Java 正則表達式的具體例子,展示了 (ab)+(?:ab)+ 的不同:

示例 1:使用?(ab)+(捕獲分組)

import java.util.regex.*;

public class RegexExample {
? ? public static void main(String[] args) {
? ? ? ? String text = "ababab";
? ? ? ??
? ? ? ? // 使用捕獲分組
? ? ? ? String regex = "(ab)+";
? ? ? ? Pattern pattern = Pattern.compile(regex);
? ? ? ? Matcher matcher = pattern.matcher(text);

? ? ? ? while (matcher.find()) {
? ? ? ? ? ? // 捕獲組 1 是每個 'ab' 的匹配
? ? ? ? ? ? System.out.println("Matched: " + matcher.group(1));
? ? ? ? }
? ? }
}
?

運行結果:

Matched: ab

Matched: ab

Matched: ab

解釋:

  • 在這個例子中,(ab)+?會將每個?ab?捕獲為分組 1,并在每次匹配時輸出?ab
  • 每個匹配的?ab?都被捕獲并打印出來。

示例 2:使用?(?:ab)+(非捕獲分組)

import java.util.regex.*;

public class RegexExample {
? ? public static void main(String[] args) {
? ? ? ? String text = "ababab";
? ? ? ??
? ? ? ? // 使用非捕獲分組
? ? ? ? String regex = "(?:ab)+";
? ? ? ? Pattern pattern = Pattern.compile(regex);
? ? ? ? Matcher matcher = pattern.matcher(text);

? ? ? ? while (matcher.find()) {
? ? ? ? ? ? // 這里沒有捕獲分組,所以直接輸出匹配的字符串
? ? ? ? ? ? System.out.println("Matched: " + matcher.group());
? ? ? ? }
? ? }
}
?

運行結果:

Matched: ababab

解釋:

  • 在這個例子中,(?:ab)+?會匹配?ababab?整個字符串,但由于使用了非捕獲分組,它不會將?ab?保存到捕獲組中。
  • matcher.group()?只返回整個匹配的字符串,即?ababab,沒有對單獨的?ab?進行捕獲。

總結:

  • 使用?(ab)+?時,每次匹配到的?ab?都會被捕獲并存儲,可以通過?matcher.group(1)?獲取。
  • 使用?(?:ab)+?時,匹配到的整個字符串?ababab?會被匹配,但沒有分組存儲每個?ab,所以無法提取每個?ab

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/82497.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/82497.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/82497.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ragflow報錯:KeyError: ‘\n “序號“‘

環境: ragflowv 0.17.2 問題描述: ragflow報錯:KeyError: ‘\n “序號”’ **1. 推薦表(輸出json格式)** [{"},{},{"},{} ]raceback (most recent call last): May 08 20:06:09 VM-0-2-ubuntu ragflow-s…

Spring Boot-8啟動涉及的監聽器(擴展點)

從出現時間上看: org.springframework.context.ApplicationListener,Spring 1.0開始出現 org.springframework.context.ApplicationContextInitializer,Spring 3.1開始出現 org.springframework.boot.SpringApplicationRunListener&#x…

如何啟動vue項目及vue語法組件化不同標簽應對的作用說明

如何啟動vue項目及vue語法組件化不同標簽應對的作用說明 提示:幫幫志會陸續更新非常多的IT技術知識,希望分享的內容對您有用。本章分享的是node.js和vue的使用。前后每一小節的內容是存在的有:學習and理解的關聯性。【幫幫志系列文章】&…

思考:(linux) tmux 超級終端快速入門的宏觀思維

tmux 工具集合 GitHub - rothgar/awesome-tmux: A list of awesome resources for tmux 要點: 習慣性思維的變換與宿主機之間的雙向復制、粘貼手動備份全部窗口,以及還原自定義窗格提示信息TPM 插件的安裝思想別名 在有些場景里,可能無法…

Python實例題:Python協程詳解公開課

目錄 Python實例題 題目 課程目標 課程內容規劃 1. 課程開場(5 分鐘) 2. 基礎概念講解(15 分鐘) 并發與并行: 線程與進程: 3. Python 協程的實現方式(20 分鐘) 生成器實現…

AI時代的數據可視化:未來已來

你有沒有想過,數據可視化在未來會變成什么樣?隨著人工智能(AI)的飛速發展,數據可視化已經不再是簡單的圖表和圖形,而是一個充滿無限可能的智能領域。AI時代的可視化不僅能自動解讀數據,還能預測…

強化學習PPO算法學習記錄

1. 四個模型: Policy Model:我們想要訓練的目標語言模型。我們一般用SFT階段產出的SFT模型來對它做初始化。Reference Model:一般也用SFT階段得到的SFT模型做初始化,在訓練過程中,它的參數是凍結的。Ref模型的主要作用…

邊緣計算從專家到小白

“云-邊-端”架構 “云” :傳統云計算的中心節點,是邊緣計算的管控端。匯集所有邊緣的感知數據、業務數據以及互聯網數據,完成對行業以及跨行業的態勢感知和分析。 “邊” :云計算的邊緣側,分為基礎設施邊緣和設備邊緣…

Windows:Powershell的使用

文章目錄 零、格式化輸出命令1、Format-List(別名:fl) 一、服務管理SC命令二、軟件管理命令三、權限管理命令1、Get-Acl2、Set-Acl 總結 零、格式化輸出命令 1、Format-List(別名:fl) 可通過管道符傳遞對象…

實現在h5中添加日歷提醒:safari喚起系統日歷,其它瀏覽器跳轉google日歷

需求:點擊按鈕后,將設定的一些信息插入到系統日歷的日程安排中。 調研過程 先google了一段時間,了解該需求大概的實現方式。可以創建日歷文件,在點擊的時候下載該日歷文件,看起來還比較復雜,并且由于不具…

【Bluedroid】藍牙 HID 設備服務注冊流程源碼解析:從初始化到 SDP 記錄構建

本文圍繞藍牙 HID(人機接口設備)服務注冊流程,詳細解析從 HID 服務啟用、設備初始化、L2CAP 通道注冊到 SDP(服務發現協議)記錄構建的全流程。通過分析關鍵函數如btif_hd_service_registration、BTA_HdEnable、HID_Dev…

Win10無法上網:Windows 無法訪問指定設備、路徑或文件。你可能沒有適當的權限訪問該項目找不到域 TEST 的域控制器DNS 解析存在問題

目錄 一.先看問題 二.解決問題 三.補充備用 一.先看問題 Win08有網且已經加入域 Win10無網并且找不到域(說明:Win10我之前已經加入過域的,并且能夠上網,但每次在宿舍和教室切換校園網,就會導致只有Win10無網&#…

M0基礎篇之ADC

本節課使用到的例程 一、Single模式例程基本配置的解釋 在例程中我們只使用到了PA25這一個通道,因此我們使用的是Single這個模式,也就是我們在配置模式的時候使用的是單一轉換。 進行多個通道的測量我們可以使用Sequence這個模式。 二、Single模式例程基…

淺談裝飾模式

一、前言 hello大家好,本次打算簡單聊一下裝飾者模式,其實寫有關設計模式的內容還是蠻有挑戰性的,首先呢就是小永哥實力有限擔心說不明白,其次設計模式是為了解決某些問題場景,在當前技術生態圈如此完善的情況下&#…

04 mysql 修改端口和重置root密碼

當我們過了一段時間,忘了自己當初創建的數據庫密碼和端口,或者端口被占用了,要怎么處理呢 首先,我們先停止mysql。 一、修改端口 打開my.ini文件,搜索port,默認是3306,根據你的需要修改為其他…

【基于 LangChain 的異步天氣查詢1】異步調用 Open-Meteo API 查詢該城市當前氣溫

目錄 一、功能概述 二、文件結構 三、城市天氣實時查詢(運行代碼) weather_runnable.py main.py 運行結果 四、技術亮點 五、使用場景 一、功能概述 它實現了以下主要功能: 用戶輸入地點(城市名) 構造提示詞…

Spark的三種部署模式及其特點與區別

Spark支持多種集群部署模式,主要分為以下三類: 部署模式特點適用場景資源管理依賴Local模式單機運行,所有進程(Driver、Executor)在同一個JVM中開發調試、小規模數據測試無集群資源管理,僅本地線程模擬無需…

再度深入理解PLC的輸入輸出接線

本文再次重新梳理: 兩線式/三線式傳感器的原理及接線、PLC的輸入和輸出接線,深入其內部原理,按照自己熟悉的方式去理解該知識 在此之前,需要先統一幾個基礎知識點: 在看任何電路的時候,需要有高低電壓差&…

dockerfile編寫入門

dockerfile 入門 前提已經知道常用的docker和linux命令 如容器的創建,運行, linux的文件命令,會上傳文件到linux等等 dockerfile簡介 之前我們所使用的鏡像都是別人構建好的,但是別人構建好的鏡像不一定能滿足我們的需求。為了滿足我們自己的某一些需求&#xff…

jenkins 啟動報錯

java.lang.UnsatisfiedLinkError: /opt/application/jdk-17.0.11/lib/libfontmanager.so: libfreetype.so.6: cannot open shared object file: No such file or directory。 解決方案: yum install freetype-devel 安裝完成之后重啟jenkins。