⑴ 正則表達式的後向引用可以解釋一下嗎
比如正則 ab(?=cd)
它只會匹配後面是cd的ab,如果後面不是cd,那些ab就不會匹配。
還有否定的情況,即匹配後面不是什麼的 內容
如 ab(?!cd) 和上面正好相反,它只會匹配後面不是cd的ab,如果後面是cd,這些ab就不匹配。
有些書上也把這種情況叫做 「環視結構」、「順序環視」、「零寬斷言」、「正向斷言」等。
還有判斷前面字元的情況,這叫「逆序環視」、「負向斷言」等
期望這是你要的解釋。還有一種和「引用」有關的是下面的情況
ab(cd)\1
這里的\1就涉及到引用【後面引用前面的】。\1代表前面的第一個括弧中的內容。
這里匹配的就是abcdcd
這里的括弧叫做「捕獲」,可以有多個括弧
\1也叫「反向引用」,如果有兩個括弧,\2可以引用第二個括弧中的內容。
後面的可能是你問的情況。
括弧和\1之間不一定挨著,中間有其他字元也是可以的。
⑵ java 正則表達式是什麼
匹配首尾空格的正則表達式:(^s*)|(s*$)。
匹配html標簽的正則表達式:<(.*)>(.*)</(.*)>|<(.*)/>。
配空行的正則表達式: [s| ]* 。
整數或者小數:^[0-9]+.{0,1}[0-9]{0,2}$。
只能輸入數字:"^[0-9]*$"。
只能輸入n位的數字:"^d{n}$"。
只能輸入至少n位的數字:"^d{n,}$"。
只能輸入m~n位的數字:。"^d{m,n}$"
只能輸入零和非零開頭的數字:"^(0|[1-9][0-9]*)$"。
只能輸入有兩位小數的正實數:"^[0-9]+(.[0-9]{2})?$"。
只能輸入有1~3位小數的正實數:"^[0-9]+(.[0-9]{1,3})?$"。
只能輸入非零的正整數:"^+?[1-9][0-9]*$"。
只能輸入非零的負整數:"^-[1-9][]0-9"*$。
只能輸入長度為3的字元:"^.{3}$"。
只能輸入由26個英文字母組成的字元串:"^[A-Za-z]+$"。
只能輸入由26個大寫英文字母組成的字元串:"^[A-Z]+$"。
只能輸入由26個小寫英文字母組成的字元串:"^[a-z]+$"。
只能輸入由數字和26個英文字母組成的字元串:"^[A-Za-z0-9]+$"。
只能輸入由數字、26個英文字母或者下劃線組成的字元串:"^w+$"。
驗證用戶密碼:"^[a-zA-Z]w{5,17}$"正確格式為:以字母開頭,長度在6~18之間,只能包含字元、數字和下劃線。
驗證是否含有^%&',;=?$"等字元:"[^%&',;=?$x22]+"。
只能輸入漢字:"^[u4e00-u9fa5]{0,}$"。
驗證Email地址:"^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$"。
驗證一年的12個月:"^(0?[1-9]|1[0-2])$"正確格式為:"01"~"09"和"1"~"12"。
驗證一個月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正確格式為;"01"~"09"和"1"~"31"。
匹配中文字元的正則表達式: [u4e00-u9fa5]。
匹配雙位元組字元(包括漢字在內):[^x00-xff]。
應用:計算字元串的長度(一個雙位元組字元長度計2,ASCII字元計1)String.prototype.len=function(){returnthis.replace(/[^x00-xff]/g,"aa").length;}。
⑶ java正則表達式,反向匹配
你說的這些詞都是中文後面跟一個/n吧,用下面的正則就好了
([\u4e00-\u9fff]+)/n
這個問題是版java分類的,java就是權這樣寫
import java.util.regex.*;
Pattern p = Pattern.compile("([\\u4e00-\\u9fff]+)/n");
⑷ 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參數指定要查詢的捕獲組的名稱;