導航:首頁 > 編程語言 > java正則捕獲組

java正則捕獲組

發布時間:2022-08-28 07:39:02

Ⅰ 正則表達式:()這個捕獲組是什麼意思有什麼特殊意義嗎

在正則中,小括弧() 表示捕獲組
這個組,也就是在匹配的時候,將某一部分的字元(串)作為組處理,這個組,可以在正則表達式的其它位置或者匹配的結果中使用,如:
^\s+([a-zA-Z]+?)\s.+$

匹配 " abcd 這是什麼"
如果沒有小括弧,那麼匹配只有一個結果,也就是整個字元串" abcd 這是什麼"
而添加了小括弧,匹配就會有兩個結果了:
1 " abcd 這是什麼"
2 "abcd"

Ⅱ 關於java正則非捕獲組的一些問題

前一個正則是不會捕獲任何東西的,但是後面的正則會捕獲(\\d{3})這個分組。

(?:)並不是說這個非捕獲分組中的其他分組也不捕獲。其實你第二個正則的非捕獲分組根本就沒有任何效果,因為這個地方根本不用分組,不需要小括弧,你加非捕獲分組就是畫蛇添足,而且它也不會影響它內部的其他捕獲分組。
你要知道,只有你需要分組的時候才會用到()或者(?:),如果你不需要分組,那就不要用(?:),因為根本沒有任何效果。

Ⅲ java正則表達式捕獲組的問題"^([^.]+\\.)+" []中算一個捕獲組嗎,()外^+算在捕獲組中嗎

  1. []不算一個捕獲組

  2. ()外的內容不算在捕獲組當中,而且^+本來就不會被捕獲……

舉個例子:

"123.456.789.".replaceAll("^([^.]+\.)+", "$1")

字元串123.456.789.最後會被替換為789.因為捕獲組$1最後捕獲的內容是789.

Ⅳ javascript中的「捕獲組」是什麼意思

「捕獲組」是正則表達式中的概念,除了 JavaScript,在其他正則表達式的應用場景中也都是通用的。下面主要以 JavaScript 中的捕獲組為例說明。

首先,在正則表達式中,可以進行「分組」,用一對圓弧括弧括起來的表達式就是一個分組。

/(pattern)///JS中分組的基本寫法

比如,「/(sun)(day)/」就表示了由「sun」和「day」子表達式構成的兩個分組,它最終的匹配效果和「/sunday/」一致,只是分組之後可以將各組子表達式的匹配結果分別處理,操作更加靈活。其實,這兩個分組也是捕獲組。

捕獲組就是將正則表達式中子表達式匹配的結果,分組按順序保存,之後可以通過序號或名稱來使用這些內容。不過,暫時 JavaScript 還不支持為捕獲組命名,因此也就無法通過名稱來訪問捕獲組,只能通過序號訪問。

下面舉3個匹配簡單整數四則運算的例子,介紹一下捕獲組的基本用法。

1)通過捕獲組分別讀取前運算數、運算符和後運算數:

varreg1=/(d+)([+-*/])(d+)/;
varmatches=reg1.exec("10*20");
varcomp=matches[0];//"10*20"
//序號0為匹配的內容,分組從1開始
varnum1=matches[1];//"10"
varsign=matches[2];//"*"
varnum2=matches[3];//"20"

捕獲組還能反向引用,即在表達式中直接使用某個分組的內容。

2)匹配前、後兩個數值的相同情況:

varreg2=/(d+)([+-*/])1/;//反向引用時用「+序號」即可
varresult1=reg2.test("25-25");//true
varresult2=reg2.test("25-14");//false

3)置換前、後兩個數的位置(使用例 1 中的正則表達式):

varstr="234/156";
varchange=str.replace(reg1,"$3$2$1");//"156/234"
//在replace語句中引用的寫法是「$+序號」


既然有捕獲組,那肯定還有非捕獲組。顧名思義,只執行匹配過程、不保存匹配結果的分組就是非捕獲組。在捕獲組表達式的左括弧後加「?」和「:」等符號即可構成非捕獲組。

/(?:pattern)///JS中非捕獲組的基本寫法

與非捕獲組相關的還有「預查」,這些擴展知識就不多介紹了,感興趣的話可以自行查找。

Ⅳ java正則表達式怎麼一個個替換匹配的內容

Stringa="我是f_static_000的f_static_001aaaf_static_001";
//正則根據自己需要修改,replaceAll可以使用正則的捕獲組功能,$n引用第n個捕獲組
/**
replaceAll(regExp,replacement);第一個參數是正則字元串,第二個是替換內容
正則裡面有捕獲(正則裡面用小括弧捕獲)和引用的功能
*/
a=a.replaceAll("(f_static_\d+)","#[face/png/$1.png]#");

Ⅵ java正則表達式,捕獲組重命名怎麼搞

1. 捕獲組及其編號:
1) 捕獲組之前講過,就是匹配到的內容,按照()子表達式劃分成若干組;
2) 例如正則表達式:(ab)(cd(ef))就有三個捕獲組,沒出現一對()就是一個捕獲組
3) 捕獲組編號規則:
i. 引擎會對捕獲組進行編號,編號規則是左括弧(從左到右出現的順序,從1開始編號;
ii. 例如:

2. 反向引用:
1) 捕獲組的作用就是為了可以在正則表達式內部或者外部(Java方法)引用它;
2) 如何引用?當然是通過前面講的用捕獲組的編號來引用咯!
3) 正則表達式內部引用:
i. \X:X是一個十進制數,X的范圍必須落在捕獲組編號范圍之內,該表達式就匹配X號捕獲組所匹配到的內容;
ii. 從上面的描述可以看出,\X匹配的內容是必須X號捕獲組匹配成功之後才能確定的!
iii. 例如:([ab])\1,匹配aabbcc的結果是aa和bb,\1的內容必須要讓1號捕獲組捕獲後才能確定,如果1號捕獲的是a那麼\1就是a,1號捕獲到了b那麼\1就是b;
4) 正則表達式外部引用:就是用Matcher對象的start、end、group查詢匹配信息時,使用捕獲組編號對捕獲組引用(int group);

3. 捕獲組命名:
1) 如果捕獲組的數量非常多,那都用數字進行編號並引用將會非常混亂,並且難以記憶每個捕獲組的內容及意義,因此對捕獲組命名顯得尤為重要;
2) Java 7開始提供了對捕獲組命名的語法,並且可以通過捕獲組的名稱對捕獲組反向引用(內外都行);
i. 命名捕獲組的語法格式:(?<自定義名>expr)
ii. 例如:(?<year>\d{4})-(?<date>\d{2}-(?<day>\d{2}))
a. 有三個命名捕獲組year、date和day
b. 從左到右編號分別為1、2、3(編號同樣是有效的)
3) 命名捕獲組的反向引用:
i. 正則表達式內引用:\k<捕獲組名稱>
!例如:(?<year>\d{4})-\k<year>可以匹配1999-1999
ii. 外部引用:Matcher對象的start、end、group的String name參數指定要查詢的捕獲組的名稱;

Ⅶ java中正則表達式中非捕獲組的一些問題

(?:X)是非捕獲組,也就是X不單獨作為一個分組提取出來,不能用match.group(num) 這樣的語法提取出來,num指數字1-9
(?>X)是原子分組,沒用過,一般正則的規則是盡可能的匹配,比如 ([0-9]+)5 這個正則可以匹配「12345"這個字元串,因為[0-9]+雖可以匹配所有的數字,但為了匹配數字5必須回溯一位,[0-9]+匹配1234,如果正則是(?>[0-9]+)5則是不回溯的,不匹配。
2、求一個正則表達式的寫法,可以匹配比如說:開始和結尾分別是dog和cat,但是中間位置上不能有pig
^dog((?!pig).)*cat$

Ⅷ Java中 正則表達式中 組 是怎麼用的我看了n遍,沒看懂

組其實就是用來提取正則中匹配到的內容。
比如有正則表達式:abc(\d{2,5})efg,這個正則本身的意思很簡單,就是字元串abc和efg之間有2到5個數字,所以字元串"abc12efg"、「abc34567efg」都能滿足這個正則匹配。這個相信你能理解。
那麼正則表達式模式中用小括弧包起來的"\d{2,5}"這部分就叫「捕獲組」,正則表達式引擎會將這部分匹配到的內容記下來,以便以後取用。java代碼中,可以在調用Matcher對象的find方法得到true的返回值的時候(true說明正則表達式模式找到了符合匹配的內容),調用該Matcher對象的group(int groupNo)方法獲得指定的組內容。還拿剛才那個例子來說,調用matcher.group(1)就會得到"12"、「34567」這樣實際匹配的內容。這里要特別注意一下,組編號是從1開始計算的。0號組實際上就是整個正則表達式匹配到的內容。
再深入一點,上面講到的所謂組是「捕獲組」,正則引擎會記下來匹配內容,但是有時候我們不需要捕獲,只是想要限制匹配,就會用到非捕獲組。如果你真明白了捕獲組,再看非捕獲組以及前瞻後顧就明白了。

Ⅸ Java正則表達式捕獲組取消重復

\\1是指第一個捕獲組,即前面(.)捕獲的那個字元。

Ⅹ java正則<(.)+>表示什麼意思

表示<>之間有任意一個(含)字元以上,括弧表示捕獲組,匹配後可以單獨提取出括弧內的內容,?代表最短匹配,比如<asdf>>>這樣的輸入,有?會匹配成<asdf>,沒有?會匹配整個<asdf>>>。

str.ReplactAll("<(.)+?>","")就是把所有<>間有一個字元以上的文字都替換為空。比如
asdf<1234>jkl<>會變成asdfjkl<>

閱讀全文

與java正則捕獲組相關的資料

熱點內容
願望清單app哪個好 瀏覽:457
安卓外放聲音怎麼解決 瀏覽:194
脈脈app干什麼用的 瀏覽:357
拽姐是哪個app 瀏覽:858
雲伺服器刪除了還有嗎 瀏覽:232
macbook可以用單片機嘛 瀏覽:307
南陽php招聘 瀏覽:814
去哪裡找按摩師很漂亮的app 瀏覽:818
86x99用簡便演算法計算 瀏覽:830
php截圖flash 瀏覽:274
卸載聯想app哪個好 瀏覽:720
php文字轉圖片 瀏覽:332
豆客後台怎麼加密碼 瀏覽:575
jpg轉換pdf破解版 瀏覽:979
php基礎書籍推薦 瀏覽:779
伺服器與外網不通如何驗證 瀏覽:353
電子版是不是就是文件夾 瀏覽:52
游戲屬性文件加密 瀏覽:464
如何讓安卓手機桌面圖標下移 瀏覽:530
ubuntuphp5環境搭建 瀏覽:101