java正規表示式之 group
api裡沒有例子,這裡我給個例子。結合api講一講。
group其實按括號來劃分(從左到右一層層劃分):
((A)(B(C)))
·呼叫Matcher的例項方法groupCount()可以得到4。
1((A)(B(C)))
2(A)
3(B(C))
4(C)
另外0
指的是本身。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PatternRegex {
public static void main(String[] args) {
String regex = "((A)(B(C)))";
String line = "ABCCBAAAABC";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(line);
System.out.println(m.groupCount());
while (m.find()) {
for (int i = 0; i <= m.groupCount(); i++) {
System.out.println(i +" "+ m.group(i)+" " + m.start(i) + " " + m.end(i));
}
}
boolean b = m.find();
}
}
執行結果:
4
ABC
0 ABC 0 3
1 ABC 0 3
2 A 0 1
3 BC 1 3
4 C 2 3
ABC
0 ABC 8 11
1 ABC 8 11
2 A 8 9
3 BC 9 11
4 C 10 11
結果解析:
可以看到((A)(B(C)))
成功匹配了兩次。0和1的結果是一樣的,第一個ABC的下標為0-3,第二個下標為8-11。2對應了(A),ABC裡的A第一個為0-1,第二個為8-9.同理3,4.
另外:
((A))
:
0:((A))
1:((A))
2:(A)
((A)A)
:
0:((A)A)
1:((A)A)
2:(A)
((A)(A))
:
0:((A)(A))
1:((A)(A))
2:(A)
3:(A)
((A)(A))A
0:((A)(A))A
1:((A)(A))
2:(A)
3:(A)
Group除了可以用數字標識還可以用name,方式如下:
?<name>X
而name的命名規範為:
The first character must be a letter.
The uppercase letters 'A' through 'Z' ('\u0041' through '\u005a'),
The lowercase letters 'a' through 'z' ('\u0061' through '\u007a'),
The digits '0' through '9' ('\u0030' through '\u0039'),
相關文章
- java正規表示式Java
- 【java】正規表示式Java
- 正規表示式(java)Java
- Java常用正規表示式Java
- java正規表示式【大全】Java
- java中的正規表示式Java
- Java正規表示式總結Java
- java正規表示式大全(常用)Java
- java 正規表示式 舉例Java
- Java 金額正規表示式Java
- Java 正規表示式詳解Java
- Java正規表示式應用Java
- java正規表示式替換Java
- java正規表示式例項Java
- 學習Java:正規表示式Java
- python之正規表示式Python
- 正規表示式之字元組字元
- Java 正規表示式——捕獲組Java
- Java 正規表示式例項操作Java
- Java017-正規表示式Java
- 正規表示式(程式碼java版)Java
- Java 中 Emoji 的正規表示式Java
- 常用正規表示式匹配模式(java)模式Java
- JAVA正規表示式語法大全Java
- 正規表示式
- JS之正規表示式詳解JS
- 前端基礎之正規表示式前端
- 深入淺出之正規表示式
- php之正規表示式函式總結PHP函式
- 【正規表示式】常用的正規表示式(數字,漢字,字串,金額等的正規表示式)字串
- 正規表示式在Java中的使用Java
- Java-正規表示式regex庫Java
- Java正規表示式簡單介紹Java
- Java 正規表示式替換斜槓Java
- Java 的正規表示式與爬蟲Java爬蟲
- Java 文字檢索神器 "正規表示式"Java
- java 正規表示式語法學習Java
- 12月4號-Java正規表示式Java