最近在使用Java正则进行字符串匹配的时候需要得到所有匹配的内容,记下一下方法:
matcher.find()表示是否在指定的字符串中有匹配到的内容;
如果有匹配到,则通过matcher.group(i)循环输出所有匹配到的内容。
matcher.groupCount()表示匹配到的内容个数。
代码示例如下:
-
String content = “你是否浓缩的v你噢吃顿饭2222内插法v”;
-
//<a href=\”\/artist\/104331\/songlist\”>
-
String regex =
“\\/artist\\\\/[0-9]+\\\\\\/songlist”
;
-
Pattern pattern = Pattern.compile(regex);
-
Matcher matcher = pattern.matcher(content);
-
if
(matcher.find()){
-
for
(
int
i=
0
; i<=matcher.groupCount(); i++){
-
System.out.println(i+
“:”
+matcher.group(i));
-
}
-
}
-
List
<
String
>
getMatchers(String regex, String source){
-
Pattern
pattern
=
Pattern
.compile(regex);
-
Matcher
matcher
=
pattern
.matcher(source);
-
List
<
String
>
list
=
new
ArrayList
<
>
();
-
while (matcher.find()) {
-
list.add(matcher.group());
-
}
-
return list;
-
}